Skip to content

feature/drs-remote-remove #210

@bwalsh

Description

@bwalsh

Feature: Add git drs remote remove command parity with user expectations and safer UX

Summary

 
Users frequently try git remote remove <name> when they intend to remove a Git DRS remote. This does not work because Git remotes and Git DRS remotes are different config domains.
 
We should provide a discoverable, user-friendly Git DRS removal workflow with clear guidance and safe defaults.
 

Problem Statement

 
From user feedback:

  • Users run git drs remote list and identify an unwanted DRS remote.
  • They attempt git remote remove <name>, which only removes [remote "..."] Git entries, not lfs.customtransfer.drs.remote.* entries.
  • There was no obvious git drs remote remove/rm path in command discovery.
  • Manual .git/config editing is error-prone and can leave stale default-remote values.
     

Proposed Feature Scope

 

  1. Provide git drs remote remove <name> and short alias git drs remote rm <name>.
  2. Remove matching DRS remote config entries from namespaced keys (lfs.customtransfer.drs.remote.*).
  3. Also clean legacy keys (drs.remote.*) where present.
  4. If the removed remote is the default, automatically reassign to an existing remote or clear default when no remotes remain.
  5. Improve command help/docs with an explicit note that git remote remove does not manage Git DRS remotes.
     

Acceptance Criteria

 

  • git drs remote rm foo removes remote foo from git drs remote list.
  • No lfs.customtransfer.drs.remote.foo.* entries remain in .git/config.
  • If foo was default and other remotes exist, one remaining remote becomes default.
  • If foo was the last remote, no default remote is set.
  • Docs include usage examples for both remove and rm and a migration note from manual config edits.
     

User Impact

 

  • Reduces support burden from config-edit workarounds.
  • Prevents broken states caused by stale defaults.
  • Aligns behavior with common CLI expectations (rm shorthand).
     

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions