Re: [PATCH 2/2] remote-curl.c: fix rpc_out()
- From
Tay Ray Chuan <rctay89@gmail.com>
- Date
- Nov 23, 2009, 17:54 UTC
- Message-ID
- <20091124015415.c22d07c1.rctay89@gmail.com>
- In-Reply-To
- <alpine.DEB.1.00.0911231137170.4985@pacific.mpi-cbg.de>
Hi,
On Mon, Nov 23, 2009 at 6:39 PM, Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> I guess you meant "not be enough", as an int can hold a pretty large > number until it turns negative.
I really did mean 'enough' - enough to trigger the use of chunked encoding. I think the most important fix here is forcing rpc_out to (according to curl) memcpy at most size_t max bytes (the removal of the extraneous ';' addresses this). Pushing with chunked transfer would fail with this extra semicolon.
Removing the possibility of a negative size_t was a preventive measure, and, like you mentioned, requires a larger repository, so it's harder to test for.
I probably should separate these issues into separate patches.
Show 5 quoted lines
> So I think in this case it is more harm- than helpful to have a test case. > > For future reference: if you need a repository with special featurs > for testing, it is best to generate it in a test script (see the many test > cases labeled 'setup' in our test suite for examples).
Here's what I came up with: use the git repository which fetched the test suite, and use the environment variable GIT_REMOTE_REFSPEC to specify the remote refspec which the tester fetches git from.
if test -z "$GIT_REMOTE_REFSPEC"; then say 'skipping test, the remote for git is not specified' else test_expect_success 'push with chunked encoding' ' OWD=$(pwd) && cd $TEST_DIRECTORY/../.git/ && REPO=$(pwd) && cd "$OWD" && echo "$REPO"/objects > .git/objects/info/alternates && git fetch "$REPO" "$GIT_REMOTE_REFSPEC"/*:refs/remotes/git/* && git push -v -v origin "refs/remotes/git/*:refs/remotes/git/*" \ >out 2>&1 && grep "POST git-receive-pack (chunked)" out ' fi
Thoughts?
-- Cheers, Ray Chuan