Forget this patch! It contains some unwanted content. Something with rebasing went wrong.. On Tuesday 14 August 2012 21:13:18 Florian Achleitner wrote: > Use svnrdump_sim.py to emulate svnrdump without an svn server. > Tests fetching, incremental fetching, fetching from file://, > and the regeneration of fast-import's marks file. > > Signed-off-by: Florian Achleitner <florian.achleitner.2.6.31@xxxxxxxxx> > --- > t/t9020-remote-svn.sh | 69 > +++++++++++++++++++++++++++++++++++++++++++++++++ transport-helper.c | > 15 ++++++----- > 2 files changed, 77 insertions(+), 7 deletions(-) > create mode 100755 t/t9020-remote-svn.sh > > diff --git a/t/t9020-remote-svn.sh b/t/t9020-remote-svn.sh > new file mode 100755 > index 0000000..a0c6a21 > --- /dev/null > +++ b/t/t9020-remote-svn.sh > @@ -0,0 +1,69 @@ > +#!/bin/sh > + > +test_description='tests remote-svn' > + > +. ./test-lib.sh > + > +# We override svnrdump by placing a symlink to the svnrdump-emulator in . > +export PATH="$HOME:$PATH" > +ln -sf $GIT_BUILD_DIR/contrib/svn-fe/svnrdump_sim.py "$HOME/svnrdump" > + > +init_git () { > + rm -fr .git && > + git init && > + #git remote add svnsim svn::sim:///$TEST_DIRECTORY/t9020/example.svnrdump > + # let's reuse an exisiting dump file!? > + git remote add svnsim svn::sim:///$TEST_DIRECTORY/t9154/svn.dump > + git remote add svnfile svn::file:///$TEST_DIRECTORY/t9154/svn.dump > +} > + > +test_debug ' > + git --version > + which git > + which svnrdump > +' > + > +test_expect_success 'simple fetch' ' > + init_git && > + git fetch svnsim && > + test_cmp .git/refs/svn/svnsim/master .git/refs/remotes/svnsim/master && > + cp .git/refs/remotes/svnsim/master master.good > +' > + > +test_debug ' > + cat .git/refs/svn/svnsim/master > + cat .git/refs/remotes/svnsim/master > +' > + > +test_expect_success 'repeated fetch, nothing shall change' ' > + git fetch svnsim && > + test_cmp master.good .git/refs/remotes/svnsim/master > +' > + > +test_expect_success 'fetch from a file:// url gives the same result' ' > + git fetch svnfile > +' > + > +test_expect_failure 'the sha1 differ because the git-svn-id line in the > commit msg contains the url' ' + test_cmp .git/refs/remotes/svnfile/master > .git/refs/remotes/svnsim/master +' > + > +test_expect_success 'mark-file regeneration' ' > + mv .git/info/fast-import/marks/svnsim > .git/info/fast-import/marks/svnsim.old && + git fetch svnsim && > + test_cmp .git/info/fast-import/marks/svnsim.old > .git/info/fast-import/marks/svnsim +' > + > +test_expect_success 'incremental imports must lead to the same head' ' > + export SVNRMAX=3 && > + init_git && > + git fetch svnsim && > + test_cmp .git/refs/svn/svnsim/master .git/refs/remotes/svnsim/master && > + unset SVNRMAX && > + git fetch svnsim && > + test_cmp master.good .git/refs/remotes/svnsim/master > +' > + > +test_debug 'git branch -a' > + > +test_done > diff --git a/transport-helper.c b/transport-helper.c > index 47db055..a363f2c 100644 > --- a/transport-helper.c > +++ b/transport-helper.c > @@ -17,6 +17,7 @@ static int debug; > struct helper_data { > const char *name; > struct child_process *helper; > + struct argv_array argv; > FILE *out; > unsigned fetch : 1, > import : 1, > @@ -103,7 +104,6 @@ static void do_take_over(struct transport *transport) > static struct child_process *get_helper(struct transport *transport) > { > struct helper_data *data = transport->data; > - struct argv_array argv = ARGV_ARRAY_INIT; > struct strbuf buf = STRBUF_INIT; > struct child_process *helper; > const char **refspecs = NULL; > @@ -125,10 +125,11 @@ static struct child_process *get_helper(struct > transport *transport) helper->in = -1; > helper->out = -1; > helper->err = 0; > - argv_array_pushf(&argv, "git-remote-%s", data->name); > - argv_array_push(&argv, transport->remote->name); > - argv_array_push(&argv, remove_ext_force(transport->url)); > - helper->argv = argv.argv; > + argv_array_init(&data->argv); > + argv_array_pushf(&data->argv, "git-remote-%s", data->name); > + argv_array_push(&data->argv, transport->remote->name); > + argv_array_push(&data->argv, remove_ext_force(transport->url)); > + helper->argv = data->argv.argv; > helper->git_cmd = 0; > helper->silent_exec_failure = 1; > > @@ -143,8 +144,6 @@ static struct child_process *get_helper(struct transport > *transport) > > data->helper = helper; > data->no_disconnect_req = 0; > - free((void*) helper_env[1]); > - argv_array_clear(&argv); > > /* > * Open the output as FILE* so strbuf_getline() can be used. > @@ -247,6 +246,8 @@ static int disconnect_helper(struct transport > *transport) close(data->helper->out); > fclose(data->out); > res = finish_command(data->helper); > + free((void*) data->helper->env[1]); > + argv_array_clear(&data->argv); > free(data->helper); > data->helper = NULL; > } -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html