[PATCH 6/8] Fix bundle --stdin
- From
Jonathan Nieder <jrnieder@gmail.com>
- Date
- Jun 26, 2010, 06:28 UTC
- Message-ID
- <20100626062811.GG15881@burratino>
- In-Reply-To
- <20100626061735.GA15881@burratino>
To write a bundle’s table of contents, the name passed on the command line for each ref is needed. Unfortunately, names passed through stdin are put in a temporary buffer and then freed; the random gibberish that tends to replace them does not look like a meaningful ref name to bundle_list_refs(), so no valid toc entries are found and ‘git bundle --stdin’ thinks it has been asked to create an empty bundle.
So teach the revision walker to keep rev names after reading them from stdin. This fixes ‘git bundle --stdin’ at the cost of a memory leak.
Reported-by: Joey Hess <joey@kitenet.net> Signed-off-by: Jonathan Nieder <jrnieder@gmail.com> --- revision.c | 2 +- t/t5704-bundle.sh | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-)
diff --git a/revision.c b/revision.c index f4b8b38..cf86af3 100644 --- a/revision.c +++ b/revision.c @@ -1022,7 +1022,7 @@ static void read_revisions_from_stdin(struct rev_info *revs, const char ***prune } die("options not supported in --stdin mode"); } - if (handle_revision_arg(sb.buf, revs, 0, 1)) + if (handle_revision_arg(xstrdup(sb.buf), revs, 0, 1)) die("bad revision '%s'", sb.buf); } if (seen_dashdash) diff --git a/t/t5704-bundle.sh b/t/t5704-bundle.sh index ddc3dc5..cc463f3 100755 --- a/t/t5704-bundle.sh +++ b/t/t5704-bundle.sh @@ -30,7 +30,7 @@ test_expect_success 'tags can be excluded by rev-list options' ' ' -test_expect_failure 'bundle --stdin' ' +test_expect_success 'bundle --stdin' ' echo master | git bundle create stdin-bundle.bdl --stdin && git ls-remote stdin-bundle.bdl >output && @@ -38,7 +38,7 @@ test_expect_failure 'bundle --stdin' ' ' -test_expect_failure 'bundle --stdin <rev-list options>' ' +test_expect_success 'bundle --stdin <rev-list options>' ' echo master | git bundle create hybrid-bundle.bdl --stdin tag && git ls-remote hybrid-bundle.bdl >output &&
-- 1.7.1.198.g8d802