Subject: [PATCH 2/3] git-remote: add -b option to enable tracking remote branches

From: Paolo Bonzini <[email-masked]>
Date: Mon, 05 Mar 2007 09:57:30 +0100

This commit adds an option to git-remote, providing a way to
switch the default behavior of git-branch from --no-track to
--track.

With `-b` option, local branches created off the remote repository
will be set up to track the remote repository, so that `git pull`
with no parameters does the right thing while you are on your local
branch.

Signed-off-by: Paolo Bonzini  <[email-masked]>
---
 Documentation/git-remote.txt |    7 ++++++-
 git-remote.perl              |    9 ++++++++-
 2 files changed, 14 insertions(+), 2 deletions(-)

diff --git a/Documentation/git-remote.txt b/Documentation/git-remote.txt
index a9fb6a9..516d890 100644
--- a/Documentation/git-remote.txt
+++ b/Documentation/git-remote.txt
@@ -10,7 +10,7 @@ SYNOPSIS
 --------
 [verse]
 'git-remote'
-'git-remote' add [-t <branch>] [-m <branch>] [-f] <name> <url>
+'git-remote' add [-t <branch>] [-m <branch>] [-f] [-b] <name> <url>
 'git-remote' show <name>
 'git-remote' prune <name>
 'git-remote' update [group]
@@ -45,6 +45,11 @@ multiple branche without grabbing all branches.
 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.
++
+With `-b` option, local branches created off the remote repository
+will be set up to track the remote repository, so that `git pull`
+with no parameters does the right thing while you are on your local
+branch.
 
 'show'::
 
diff --git a/git-remote.perl b/git-remote.perl
index bd70bf1..0a736da 100755
--- a/git-remote.perl
+++ b/git-remote.perl
@@ -265,6 +265,9 @@ sub add_remote {
 		$git->command('config', '--add', "remote.$name.fetch",
 			      "+refs/heads/$_:refs/remotes/$name/$_");
 	}
+	if ($opts->{'track_branch'}) {
+		$git->command('config', "remote.$name.trackintolocalbranches", "true");
+	}
 	if ($opts->{'fetch'}) {
 		$git->command('fetch', $name);
 	}
@@ -300,7 +303,7 @@ sub update_remote {
 }
 
 sub add_usage {
-	print STDERR "Usage: git remote add [-f] [-t track]* [-m master] <name> <url>\n";
+	print STDERR "Usage: git remote add [-f] [-b] [-t track]* [-m master] <name> <url>\n";
 	exit(1);
 }
 
@@ -365,6 +368,10 @@ elsif ($ARGV[0] eq 'add') {
 			$opts{'fetch'} = 1;
 			next;
 		}
+		if ($opt eq '-b' || $opt eq '--track-into-branches') {
+			$opts{'track_branch'} = 1;
+			next;
+		}
 		if ($opt eq '-t' || $opt eq '--track') {
 			if (@ARGV < 1) {
 				add_usage();
-- 
1.4.4.2