[PATCH] remote: add 'rm' subcommand

Subsystems: the rest

STALE3764d

4 messages, 2 authors, 2016-06-15 · open the first message on its own page

[PATCH] remote: add 'rm' subcommand

From: James Bowes <hidden>
Date: 2016-06-15 22:43:14

Introduce git-remote rm <name> which will:
 - Remove the remote config entry for <name>.
 - Remove any config entries for tracking branches of <name>.
 - Remove any stored remote branches of <name>.

Signed-off-by: James Bowes <redacted>
---

Here's a quick patch to implement the reverse of 'git-remote add', as
was asked about recently on the list[1]. Tested minimally with a
collection of on-disk repositories.

If there is any interest in this, I'll follow up later with additions
to the docs.

-James

[1] http://article.gmane.org/gmane.comp.version-control.git/49222

 git-remote.perl |   38 ++++++++++++++++++++++++++++++++++++++
 1 files changed, 38 insertions(+), 0 deletions(-)
diff --git a/git-remote.perl b/git-remote.perl
index 5763799..05aa8d6 100755
--- a/git-remote.perl
+++ b/git-remote.perl
@@ -313,6 +313,34 @@ sub update_remote {
 	}
 }
 
+sub rm_remote {
+    my ($name) = @_;
+	if (!exists $remote->{$name}) {
+		print STDERR "No such remote $name\n";
+		return;
+	}
+
+	$git->command('config', '--remove-section', "remote.$name");
+
+	eval {
+	    my @trackers = $git->command('config', '--get-regexp',
+			'branch.*.remote', $name);
+		for (@trackers) {
+			/^branch\.(.*)?\.remote/;
+			$git->config('--unset', "branch.$1.remote");
+			$git->config('--unset', "branch.$1.merge");
+		}
+	};
+
+
+    my @refs = $git->command('for-each-ref',
+		'--format=%(refname) %(objectname)', "refs/remotes/$name");
+	for (@refs) {
+		($ref, $object) = split;
+		$git->command(qw(update-ref -d), $ref, $object);
+	}
+}
+
 sub add_usage {
 	print STDERR "Usage: git remote add [-f] [-t track]* [-m master] <name> <url>\n";
 	exit(1);
@@ -403,9 +431,19 @@ elsif ($ARGV[0] eq 'add') {
 	}
 	add_remote($ARGV[1], $ARGV[2], \%opts);
 }
+elsif ($ARGV[0] eq 'rm') {
+	if (@ARGV <= 1) {
+		print STDERR "Usage: git remote rm <remote>\n";
+	}
+    else {
+        rm_remote($ARGV[1]);
+	}
+    exit(1);
+}
 else {
 	print STDERR "Usage: git remote\n";
 	print STDERR "       git remote add <name> <url>\n";
+	print STDERR "       git remote rm <name>\n";
 	print STDERR "       git remote show <name>\n";
 	print STDERR "       git remote prune <name>\n";
 	print STDERR "       git remote update [group]\n";
-- 
1.5.2.1.851.g432c

Re: [PATCH] remote: add 'rm' subcommand

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:43:19

Hi,

On Tue, 5 Jun 2007, James Bowes wrote:
Introduce git-remote rm <name> which will:
 - Remove the remote config entry for <name>.
 - Remove any config entries for tracking branches of <name>.
 - Remove any stored remote branches of <name>.
Any word on this?

Ciao,
Dscho

[PATCH] remote: document the 'rm' subcommand

From: James Bowes <hidden>
Date: 2016-06-15 22:43:20

Signed-off-by: James Bowes <redacted>
---

So I still think 'git remote rm' would be nice to have. Here's a bit of
documentation for it.

 Documentation/git-remote.txt |    6 ++++++
 1 files changed, 6 insertions(+), 0 deletions(-)
diff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt
index 61a6022..fff40ca 100644
--- a/Documentation/git-remote.txt
+++ b/Documentation/git-remote.txt
@@ -11,6 +11,7 @@ SYNOPSIS
 [verse]
 'git-remote'
 'git-remote' add [-t <branch>] [-m <branch>] [-f] <name> <url>
+'git-remote' rm <name>
 'git-remote' show <name>
 'git-remote' prune <name>
 'git-remote' update [group]
@@ -46,6 +47,11 @@ With `-m <master>` option, `$GIT_DIR/remotes/<name>/HEAD` is set
 up to point at remote's `<master>` branch instead of whatever
 branch the `HEAD` at the remote repository actually points at.
 
+'rm'::
+
+Remove the remote named <name>. All remote tracking branches and
+configuration settings for the remote are removed.
+
 'show'::
 
 Gives some information about the remote <name>.
-- 
1.5.3.rc0.838.gdf39a-dirty

Re: [PATCH] remote: document the 'rm' subcommand

From: Johannes Schindelin <hidden>
Date: 2016-06-15 22:43:20

Hi,

On Sat, 7 Jul 2007, James Bowes wrote:
Signed-off-by: James Bowes <redacted>
---

So I still think 'git remote rm' would be nice to have. Here's a bit of 
documentation for it.
Me, too. However, I would feel more comfortable with a test suite that it 
actually works as advertised. It is on my TODO list, which keeps growing 
on top of it.

Ciao,
Dscho
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help