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

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions