From: Junio C Hamano <gitster@pobox•com>
To: Johannes Schindelin <johannes.schindelin@gmx•de>
Cc: git@vger•kernel.org
Subject: Re: [PATCH v5] Add another option for receive.denyCurrentBranch
Date: Sun, 30 Nov 2014 19:18:50 -0800 [thread overview]
Message-ID: <xmqq1tokrrad.fsf@gitster.dls.corp.google.com> (raw)
In-Reply-To: ff9c17b14b4418ae9743a094989d5478dab19701.1417041788.git.johannes.schindelin@gmx.de
Thanks, will queue.
I think we would need a bit more tests to protect the feature from
future changes, if you care about the cleanliness requirement of
this feature which is a lot stricter than that of "git checkout".
Perhaps like this one on top.
-- >8 --
From: Junio C Hamano <gitster@pobox•com>
Date: Sun, 30 Nov 2014 17:54:30 -0800
Subject: [PATCH] t5516: more tests for receive.denyCurrentBranch=updateInstead
The previous one tests only the case where a path to be updated by
the push-to-deploy has an incompatible change in the target's
working tree that has already been added to the index, but the
feature itself wants to require the working tree to be a lot cleaner
than what is tested. Add a handful more tests to protect the
feature from future changes that mistakenly (from the viewpoint of
the inventor of the feature) loosens the cleanliness requirement,
namely:
- A change only to the working tree but not to the index is still a
change to be protected;
- An untracked file in the working tree that would be overwritten
by a push-to-deploy needs to be protected;
- A change that happens to make a file identical to what is being
pushed is still a change to be protected (i.e. the feature's
cleanliness requirement is more strict than that of checkout).
Also, test that a stat-only change to the working tree is not a
reason to reject a push-to-deploy.
Signed-off-by: Junio C Hamano <gitster@pobox•com>
---
t/t5516-fetch-push.sh | 96 ++++++++++++++++++++++++++++++++++++++++++++++-----
1 file changed, 87 insertions(+), 9 deletions(-)
diff --git a/t/t5516-fetch-push.sh b/t/t5516-fetch-push.sh
index 7b353d0..85c7fec 100755
--- a/t/t5516-fetch-push.sh
+++ b/t/t5516-fetch-push.sh
@@ -1332,28 +1332,106 @@ test_expect_success 'fetch into bare respects core.logallrefupdates' '
test_expect_success 'receive.denyCurrentBranch = updateInstead' '
git push testrepo master &&
- (cd testrepo &&
+ (
+ cd testrepo &&
git reset --hard &&
git config receive.denyCurrentBranch updateInstead
) &&
test_commit third path2 &&
+
+ # Try pushing into a repository with pristine working tree
git push testrepo master &&
- test $(git rev-parse HEAD) = $(cd testrepo && git rev-parse HEAD) &&
- test third = "$(cat testrepo/path2)" &&
- (cd testrepo &&
+ (
+ cd testrepo &&
+ git update-index -q --refresh &&
+ git diff-files --quiet -- &&
+ git diff-index --quiet --cached HEAD -- &&
+ test third = "$(cat path2)" &&
+ test $(git -C .. rev-parse HEAD) = $(git rev-parse HEAD)
+ ) &&
+
+ # Try pushing into a repository with working tree needing a refresh
+ (
+ cd testrepo &&
+ git reset --hard HEAD^ &&
+ test $(git -C .. rev-parse HEAD^) = $(git rev-parse HEAD) &&
+ test-chmtime +100 path1
+ ) &&
+ git push testrepo master &&
+ (
+ cd testrepo &&
git update-index -q --refresh &&
git diff-files --quiet -- &&
git diff-index --quiet --cached HEAD -- &&
- echo changed >path2 &&
- git add path2
+ test_cmp ../path1 path1 &&
+ test third = "$(cat path2)" &&
+ test $(git -C .. rev-parse HEAD) = $(git rev-parse HEAD)
) &&
+
+ # Update what is to be pushed
test_commit fourth path2 &&
+
+ # Try pushing into a repository with a dirty working tree
+ # (1) the working tree updated
+ (
+ cd testrepo &&
+ echo changed >path1
+ ) &&
test_must_fail git push testrepo master &&
- test $(git rev-parse HEAD^) = $(git -C testrepo rev-parse HEAD) &&
- (cd testrepo &&
+ (
+ cd testrepo &&
+ test $(git -C .. rev-parse HEAD^) = $(git rev-parse HEAD) &&
+ git diff --quiet --cached &&
+ test changed = "$(cat path1)"
+ ) &&
+
+ # (2) the index updated
+ (
+ cd testrepo &&
+ echo changed >path1 &&
+ git add path1
+ ) &&
+ test_must_fail git push testrepo master &&
+ (
+ cd testrepo &&
+ test $(git -C .. rev-parse HEAD^) = $(git rev-parse HEAD) &&
+ git diff --quiet &&
+ test changed = "$(cat path1)"
+ ) &&
+
+ # Introduce a new file in the update
+ test_commit fifth path3 &&
+
+ # (3) the working tree has an untracked file that would interfere
+ (
+ cd testrepo &&
+ git reset --hard &&
+ echo changed >path3
+ ) &&
+ test_must_fail git push testrepo master &&
+ (
+ cd testrepo &&
+ test $(git -C .. rev-parse HEAD^^) = $(git rev-parse HEAD) &&
+ git diff --quiet &&
+ git diff --quiet --cached &&
+ test changed = "$(cat path3)"
+ ) &&
+
+ # (4) the target changes to what gets pushed but it still is a change
+ (
+ cd testrepo &&
+ git reset --hard &&
+ echo fifth >path3 &&
+ git add path3
+ ) &&
+ test_must_fail git push testrepo master &&
+ (
+ cd testrepo &&
+ test $(git -C .. rev-parse HEAD^^) = $(git rev-parse HEAD) &&
git diff --quiet &&
- test changed = "$(cat path2)"
+ test fifth = "$(cat path3)"
)
+
'
test_done
--
2.2.0-117-g2c5ea17
next prev parent reply other threads:[~2014-12-01 3:18 UTC|newest]
Thread overview: 71+ messages / expand[flat|nested] mbox.gz Atom feed top
2014-11-07 13:58 [PATCH 0/2] Support updating working trees when pushing into non-bare repos Johannes Schindelin
2014-11-07 13:58 ` [PATCH 1/2] Add a few more values for receive.denyCurrentBranch Johannes Schindelin
2014-11-07 18:49 ` Junio C Hamano
2014-11-07 18:58 ` Johannes Schindelin
2014-11-10 12:54 ` Johannes Schindelin
2014-11-10 16:00 ` Junio C Hamano
2014-11-12 11:13 ` Johannes Schindelin
2014-11-12 18:00 ` Junio C Hamano
2014-11-08 11:18 ` Jeff King
2014-11-08 18:48 ` brian m. carlson
2014-11-10 13:03 ` Johannes Schindelin
2014-11-07 13:58 ` [PATCH 2/2] Let deny.currentBranch=updateInstead ignore submodules Johannes Schindelin
2014-11-07 19:20 ` Junio C Hamano
2014-11-09 16:42 ` Jens Lehmann
2014-11-10 13:04 ` Johannes Schindelin
2014-11-10 13:01 ` Johannes Schindelin
2014-11-10 15:42 ` Junio C Hamano
2014-11-10 19:32 ` Junio C Hamano
2014-11-12 11:09 ` Johannes Schindelin
2014-11-12 17:59 ` Junio C Hamano
2014-11-13 10:29 ` Johannes Schindelin
2014-11-13 10:38 ` Johannes Schindelin
2014-11-13 17:41 ` Junio C Hamano
2014-11-13 18:55 ` Johannes Schindelin
2014-11-13 19:48 ` Junio C Hamano
2014-11-13 21:06 ` Junio C Hamano
2014-11-14 7:49 ` Junio C Hamano
2014-12-02 3:24 ` Junio C Hamano
2014-12-02 3:25 ` [PATCH 2/2] receive-pack: support push-to-checkout hook Junio C Hamano
2014-12-02 8:47 ` Johannes Schindelin
2014-12-02 13:03 ` Michael J Gruber
2014-12-02 13:25 ` Johannes Schindelin
2014-12-02 16:39 ` Junio C Hamano
2014-12-02 16:45 ` Johannes Schindelin
2014-12-02 17:00 ` Junio C Hamano
2014-12-02 17:12 ` Johannes Schindelin
2014-12-02 17:19 ` Junio C Hamano
2014-11-13 17:41 ` [PATCH 2/2] Let deny.currentBranch=updateInstead ignore submodules Junio C Hamano
2014-11-12 11:06 ` Johannes Schindelin
2014-11-10 14:38 ` [PATCH v2 0/2] Support updating working trees when pushing into non-bare repos Johannes Schindelin
2014-11-13 11:03 ` [PATCH v3 0/1] " Johannes Schindelin
2014-11-13 11:03 ` [PATCH v3 1/1] Add another option for receive.denyCurrentBranch Johannes Schindelin
2014-11-13 17:51 ` Junio C Hamano
2014-11-13 19:21 ` Johannes Schindelin
2014-11-13 17:47 ` [PATCH v3 0/1] Support updating working trees when pushing into non-bare repos Junio C Hamano
2014-11-13 19:11 ` Junio C Hamano
2014-11-13 19:18 ` Johannes Schindelin
2014-11-26 20:21 ` [PATCH v4] " Johannes Schindelin
2014-11-26 20:21 ` [PATCH v4] Add another option for receive.denyCurrentBranch Johannes Schindelin
2014-11-26 21:02 ` Junio C Hamano
2014-11-26 22:44 ` [PATCH v5] Support updating working trees when pushing into non-bare repos Johannes Schindelin
2014-11-26 22:44 ` [PATCH v5] Add another option for receive.denyCurrentBranch Johannes Schindelin
2014-12-01 3:18 ` Junio C Hamano [this message]
2014-12-01 7:44 ` Johannes Schindelin
2014-12-01 23:49 ` Junio C Hamano
2014-12-02 0:51 ` Junio C Hamano
2014-12-02 8:21 ` Johannes Schindelin
2014-12-02 16:20 ` Junio C Hamano
2014-12-02 16:51 ` Johannes Schindelin
2014-12-02 17:23 ` Junio C Hamano
[not found] ` <cover.1415630072.git.johannes.schindelin@gmx.de>
2014-11-10 14:38 ` [PATCH v2 1/2] Clean stale environment pointer in finish_command() Johannes Schindelin
2014-11-10 14:41 ` Johannes Schindelin
2014-11-11 3:16 ` Jeff King
2014-11-11 15:55 ` Junio C Hamano
2014-11-12 10:45 ` Johannes Schindelin
2014-11-12 10:52 ` Jeff King
2014-11-12 10:59 ` Jeff King
2014-11-12 16:17 ` Junio C Hamano
2014-11-10 21:44 ` Junio C Hamano
2014-11-11 3:11 ` Jeff King
2014-11-10 14:38 ` [PATCH v2 2/2] Add a few more options for receive.denyCurrentBranch Johannes Schindelin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=xmqq1tokrrad.fsf@gitster.dls.corp.google.com \
--to=gitster@pobox$(echo .)com \
--cc=git@vger$(echo .)kernel.org \
--cc=johannes.schindelin@gmx$(echo .)de \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox