Hi, I'm rerolling this series with the changes fron Junio, plus a bit more cleanups. I dropped the last patch, because I found an issue and a separate patch series would take care of that. Other than that the main changes remain the same. The old remote-testgit is now remote-testpy (as it's testing the python framework, not really remote helpers). The tests are simplified, and exercise more features of transport-helper, and unsuprisingly, find more bugs. Cheers. Interdiff: diff --git a/builtin/fast-export.c b/builtin/fast-export.c index 60e8f3b..31bfbee 100644 --- a/builtin/fast-export.c +++ b/builtin/fast-export.c @@ -529,9 +529,7 @@ static void get_tags_and_duplicates(struct object_array *pending, * sure it gets properly updated eventually. */ if (commit->util || commit->object.flags & SHOWN) - if (!(commit->object.flags & UNINTERESTING)) - string_list_append(extra_refs, full_name)->util = commit; - + string_list_append(extra_refs, full_name)->util = commit; if (!commit->util) commit->util = full_name; } @@ -620,7 +618,7 @@ static void import_marks(char *input_file) if (object->flags & SHOWN) error("Object %s already has a mark", sha1_to_hex(sha1)); - if (object->type != 1) + if (object->type != OBJ_COMMIT) /* only commits */ continue; diff --git a/git-remote-testgit b/git-remote-testgit index 4a00387..0389545 100755 --- a/git-remote-testgit +++ b/git-remote-testgit @@ -11,9 +11,6 @@ default_refspec="refs/heads/*:${prefix}/heads/*" refspec="${GIT_REMOTE_TESTGIT_REFSPEC-$default_refspec}" -gitmarks="$dir/git.marks" -testgitmarks="$dir/testgit.marks" - test -z "$refspec" && prefix="refs" export GIT_DIR="$url/.git" @@ -22,11 +19,11 @@ mkdir -p "$dir" if test -z "$GIT_REMOTE_TESTGIT_NO_MARKS" then + gitmarks="$dir/git.marks" + testgitmarks="$dir/testgit.marks" test -e "$gitmarks" || >"$gitmarks" test -e "$testgitmarks" || >"$testgitmarks" -else - >"$gitmarks" - >"$testgitmarks" + testgitmarks_args=( "--"{import,export}"-marks=$testgitmarks" ) fi while read line @@ -36,8 +33,11 @@ do echo 'import' echo 'export' test -n "$refspec" && echo "refspec $refspec" - echo "*import-marks $gitmarks" - echo "*export-marks $gitmarks" + if test -n "$gitmarks" + then + echo "*import-marks $gitmarks" + echo "*export-marks $gitmarks" + fi echo ;; list) @@ -56,17 +56,20 @@ do test "${line%% *}" != "import" && break done - echo "feature import-marks=$gitmarks" - echo "feature export-marks=$gitmarks" + if test -n "$gitmarks" + then + echo "feature import-marks=$gitmarks" + echo "feature export-marks=$gitmarks" + fi echo "feature done" - git fast-export --{import,export}-marks="$testgitmarks" $refs | + git fast-export "${testgitmarks_args[@]}" $refs | sed -e "s#refs/heads/#${prefix}/heads/#g" echo "done" ;; export) before=$(git for-each-ref --format='%(refname) %(objectname)') - git fast-import --{import,export}-marks="$testgitmarks" --quiet + git fast-import "${testgitmarks_args[@]}" --quiet after=$(git for-each-ref --format='%(refname) %(objectname)') diff --git a/t/t5801-remote-helpers.sh b/t/t5801-remote-helpers.sh index b6cc5c0..b2782a2 100755 --- a/t/t5801-remote-helpers.sh +++ b/t/t5801-remote-helpers.sh @@ -112,37 +112,40 @@ test_expect_success 'pulling without refspecs' ' ' test_expect_failure 'pushing without refspecs' ' + test_when_finished "(cd local2 && git reset --hard origin)" && (cd local2 && echo content >>file && - git commit -a -m three && + git commit -a -m ten && GIT_REMOTE_TESTGIT_REFSPEC="" git push) && compare_refs local2 HEAD server HEAD ' -test_expect_failure 'pulling with straight refspec' ' +test_expect_success 'pulling with straight refspec' ' (cd local2 && GIT_REMOTE_TESTGIT_REFSPEC="*:*" git pull) && compare_refs local2 HEAD server HEAD ' test_expect_failure 'pushing with straight refspec' ' + test_when_finished "(cd local2 && git reset --hard origin)" && (cd local2 && echo content >>file && - git commit -a -m three && + git commit -a -m eleven && GIT_REMOTE_TESTGIT_REFSPEC="*:*" git push) && compare_refs local2 HEAD server HEAD ' -test_expect_failure 'pulling without marks' ' +test_expect_success 'pulling without marks' ' (cd local2 && GIT_REMOTE_TESTGIT_NO_MARKS=1 git pull) && compare_refs local2 HEAD server HEAD ' test_expect_failure 'pushing without marks' ' + test_when_finished "(cd local2 && git reset --hard origin)" && (cd local2 && echo content >>file && - git commit -a -m three && + git commit -a -m twelve && GIT_REMOTE_TESTGIT_NO_MARKS=1 git push) && compare_refs local2 HEAD server HEAD ' diff --git a/t/t9350-fast-export.sh b/t/t9350-fast-export.sh index 15357a1..237d2e5 100755 --- a/t/t9350-fast-export.sh +++ b/t/t9350-fast-export.sh @@ -461,7 +461,7 @@ from :12 EOF test_expect_success 'refs are updated even if no commits need to be exported' ' - echo -n > tmp-marks && + > tmp-marks && git fast-export --import-marks=tmp-marks \ --export-marks=tmp-marks master > /dev/null && git fast-export --import-marks=tmp-marks \ @@ -469,10 +469,4 @@ test_expect_success 'refs are updated even if no commits need to be exported' ' test_cmp expected actual ' -test_expect_success 'proper extra refs handling' ' - git fast-export master ^master master..master > actual && - echo -n > expected && - test_cmp expected actual -' - test_done .gitignore | 2 +- Documentation/git-remote-testgit.txt | 2 +- Makefile | 2 +- builtin/fast-export.c | 16 ++- git-remote-testgit | 90 ++++++++++++ git-remote-testgit.py | 272 ----------------------------------- git-remote-testpy.py | 272 +++++++++++++++++++++++++++++++++++ git_remote_helpers/git/importer.py | 2 +- t/t5800-remote-helpers.sh | 148 ------------------- t/t5800-remote-testpy.sh | 148 +++++++++++++++++++ t/t5801-remote-helpers.sh | 161 +++++++++++++++++++++ t/t9350-fast-export.sh | 35 ++++- 12 files changed, 719 insertions(+), 431 deletions(-) create mode 100755 git-remote-testgit delete mode 100644 git-remote-testgit.py create mode 100644 git-remote-testpy.py delete mode 100755 t/t5800-remote-helpers.sh create mode 100755 t/t5800-remote-testpy.sh create mode 100755 t/t5801-remote-helpers.sh -- 1.8.0 -- 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