summaryrefslogtreecommitdiff
path: root/trace.c
diff options
context:
space:
mode:
authorPaolo Bonzini <paolo.bonzini@lu.unisi.ch>2007-03-08 09:58:35 (GMT)
committerJunio C Hamano <junkio@cox.net>2007-03-11 07:41:58 (GMT)
commit0746d19a823aa12239df9d32db6fa6795d8c8539 (patch)
tree5c8d71d97057acc5f41ca6eac6a5f579c8529aff /trace.c
parent8a3fbdd9e6c37c74b12fd0e8bd7cde8372861288 (diff)
downloadgit-0746d19a823aa12239df9d32db6fa6795d8c8539.zip
git-0746d19a823aa12239df9d32db6fa6795d8c8539.tar.gz
git-0746d19a823aa12239df9d32db6fa6795d8c8539.tar.bz2
git-branch, git-checkout: autosetup for remote branch tracking
In order to track and build on top of a branch 'topic' you track from your upstream repository, you often would end up doing this sequence: git checkout -b mytopic origin/topic git config --add branch.mytopic.remote origin git config --add branch.mytopic.merge refs/heads/topic This would first fork your own 'mytopic' branch from the 'topic' branch you track from the 'origin' repository; then it would set up two configuration variables so that 'git pull' without parameters does the right thing while you are on your own 'mytopic' branch. This commit adds a --track option to git-branch, so that "git branch --track mytopic origin/topic" performs the latter two actions when creating your 'mytopic' branch. If the configuration variable branch.autosetupmerge is set to true, you do not have to pass the --track option explicitly; further patches in this series allow setting the variable with a "git remote add" option. The configuration variable is off by default, and there is a --no-track option to countermand it even if the variable is set. Signed-off-by: Paolo Bonzini <bonzini@gnu.org> Signed-off-by: Junio C Hamano <junkio@cox.net>
Diffstat (limited to 'trace.c')
-rw-r--r--trace.c18
1 files changed, 10 insertions, 8 deletions
diff --git a/trace.c b/trace.c
index 27fef86..7961a27 100644
--- a/trace.c
+++ b/trace.c
@@ -26,14 +26,14 @@
#include "quote.h"
/* Stolen from "imap-send.c". */
-static int git_vasprintf(char **strp, const char *fmt, va_list ap)
+int nfvasprintf(char **strp, const char *fmt, va_list ap)
{
int len;
char tmp[1024];
if ((len = vsnprintf(tmp, sizeof(tmp), fmt, ap)) < 0 ||
!(*strp = xmalloc(len + 1)))
- return -1;
+ die("Fatal: Out of memory\n");
if (len >= (int)sizeof(tmp))
vsprintf(*strp, fmt, ap);
else
@@ -41,13 +41,15 @@ static int git_vasprintf(char **strp, const char *fmt, va_list ap)
return len;
}
-/* Stolen from "imap-send.c". */
-int nfvasprintf(char **str, const char *fmt, va_list va)
+int nfasprintf(char **str, const char *fmt, ...)
{
- int ret = git_vasprintf(str, fmt, va);
- if (ret < 0)
- die("Fatal: Out of memory\n");
- return ret;
+ int rc;
+ va_list args;
+
+ va_start(args, fmt);
+ rc = nfvasprintf(str, fmt, args);
+ va_end(args);
+ return rc;
}
/* Get a trace file descriptor from GIT_TRACE env variable. */