diff options
| author | David Bremner <david@tethera.net> | 2023-04-03 07:22:48 -0300 |
|---|---|---|
| committer | David Bremner <david@tethera.net> | 2024-07-25 17:39:50 +0900 |
| commit | 30740296e7b211047936ade679e4a15e494ee91c (patch) | |
| tree | 323f63f7cea64014f780e3dccf08734670c98bfb /test/T850-git.sh | |
| parent | 6b9fccb2e241156ec3f3fcfa334c73df3cb1fb1e (diff) | |
CLI/git: add reset command
Sometimes merging is not what we want with tags; in particular it
tends to keep tags in the local repo that have been removed elsewhere.
This commit provides a new reset command; the reset itself is trivial,
but the work is to provide a safety check that uses the existing
--force and git.safe_fraction machinery.
Diffstat (limited to 'test/T850-git.sh')
| -rwxr-xr-x | test/T850-git.sh | 46 |
1 files changed, 45 insertions, 1 deletions
diff --git a/test/T850-git.sh b/test/T850-git.sh index 831e4678..2591521b 100755 --- a/test/T850-git.sh +++ b/test/T850-git.sh @@ -213,6 +213,51 @@ cat <<EOF > EXPECTED EOF test_expect_equal_file EXPECTED OUTPUT +test_begin_subtest "reset" +notmuch git -C reset.git -p '' clone remote.git +notmuch git -C reset.git checkout --force +notmuch tag +test4 id:20091117190054.GU3165@dottiness.seas.harvard.edu +notmuch git -C remote.git commit --force +notmuch tag -test4 id:20091117190054.GU3165@dottiness.seas.harvard.edu +notmuch git -C reset.git fetch +notmuch git -C reset.git reset +notmuch git -C reset.git checkout --force +notmuch dump id:20091117190054.GU3165@dottiness.seas.harvard.edu | grep -v '^#' > OUTPUT +cat <<EOF > EXPECTED ++inbox +signed +test2 +test3 +test4 +unread -- id:20091117190054.GU3165@dottiness.seas.harvard.edu +EOF +test_expect_equal_file EXPECTED OUTPUT + +test_begin_subtest "reset (require force for large change)" +notmuch git -C reset2.git -p '' clone remote.git +notmuch git -C reset2.git checkout --force +notmuch tag +test5 '*' +notmuch git -C remote.git commit --force +notmuch tag -test5 '*' +notmuch git -C reset2.git fetch +test_expect_code 1 "notmuch git -C reset2.git -l debug reset" + +test_begin_subtest "reset (don't require force for large change to one message)" +notmuch git -C reset3.git -p '' clone remote.git +notmuch git -C reset3.git checkout --force +notmuch dump id:20091117190054.GU3165@dottiness.seas.harvard.edu > BEFORE +for tag in $(seq 1 100); do + notmuch tag +$tag id:20091117190054.GU3165@dottiness.seas.harvard.edu +done +notmuch git -C remote.git commit --force +notmuch restore < BEFORE +notmuch git -C reset3.git fetch +test_expect_code 0 "notmuch git -C reset3.git -l debug reset" + +test_begin_subtest "reset --force" +notmuch git -C reset4.git -p '' clone remote.git +notmuch git -C reset4.git checkout --force +notmuch tag +test6 '*' +notmuch git -C remote.git commit --force +notmuch tag -test6 '*' +notmuch git -C reset4.git fetch +test_expect_code 0 "notmuch git -C reset4.git -l debug reset --force" + test_begin_subtest "environment passed through when run as 'notmuch git'" env NOTMUCH_GIT_DIR=foo NOTMUCH_GIT_PREFIX=bar NOTMUCH_PROFILE=default notmuch git -C tags.git -p '' -ldebug status |& \ grep '^env ' | notmuch_dir_sanitize > OUTPUT @@ -311,7 +356,6 @@ prefix = env:: EOF test_expect_equal_file EXPECTED OUTPUT - test_begin_subtest "init, xdg default location" repo=home/.local/share/notmuch/default/git notmuch git -ldebug init |& grep '^repository' | notmuch_dir_sanitize > OUTPUT |
