git@vger.kernel.org list mirror (unofficial, one of many)
 help / color / mirror / code / Atom feed
* [PATCHv3 0/2] git-p4: unshelve uses HEAD^n, not HEAD~n
@ 2020-09-20  8:49 Luke Diamand
  2020-09-20  8:49 ` [PATCHv3 1/2] git-p4: demonstrate `unshelve` bug Luke Diamand
  0 siblings, 1 reply; 3+ messages in thread
From: Luke Diamand @ 2020-09-20  8:49 UTC (permalink / raw)
  To: git; +Cc: Liu Xuhui (Jackson), Eric Sunshine, Luke Diamand

Updated commits incorporating comments from Eric Sunshine,
fixing indentation.

Luke Diamand (2):
  git-p4: demonstrate `unshelve` bug
  git-p4: fix `unshelve` bug finding parent commit

 git-p4.py           | 2 +-
 t/t9832-unshelve.sh | 5 ++++-
 2 files changed, 5 insertions(+), 2 deletions(-)

-- 
2.28.0.762.g324f61785e


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCHv3 1/2] git-p4: demonstrate `unshelve` bug
  2020-09-20  8:49 [PATCHv3 0/2] git-p4: unshelve uses HEAD^n, not HEAD~n Luke Diamand
@ 2020-09-20  8:49 ` Luke Diamand
  2020-09-20  8:49   ` [PATCHv3 2/2] git-p4: fix `unshelve` bug finding parent commit Luke Diamand
  0 siblings, 1 reply; 3+ messages in thread
From: Luke Diamand @ 2020-09-20  8:49 UTC (permalink / raw)
  To: git; +Cc: Liu Xuhui (Jackson), Eric Sunshine, Luke Diamand

`git-p4 unshelve` uses HEAD^$n to find the parent commit, which
fails if there is an additional commit. Augment the tests to demonstrate
this problem.

Signed-off-by: Luke Diamand <luke@diamand.org>
---
 t/t9832-unshelve.sh | 7 +++++--
 1 file changed, 5 insertions(+), 2 deletions(-)

diff --git a/t/t9832-unshelve.sh b/t/t9832-unshelve.sh
index e9276c48f4..c08234bea0 100755
--- a/t/t9832-unshelve.sh
+++ b/t/t9832-unshelve.sh
@@ -29,8 +29,11 @@ test_expect_success 'init depot' '
 	)
 '
 
+# Create an initial clone, with a commit unrelated to the P4 change
+# on HEAD
 test_expect_success 'initial clone' '
-	git p4 clone --dest="$git" //depot/@all
+	git p4 clone --dest="$git" //depot/@all &&
+	test_commit -C "$git" "unrelated"
 '
 
 test_expect_success 'create shelved changelist' '
@@ -77,7 +80,7 @@ EOF
 	)
 '
 
-test_expect_success 'update shelved changelist and re-unshelve' '
+test_expect_failure 'update shelved changelist and re-unshelve' '
 	test_when_finished cleanup_git &&
 	(
 		cd "$cli" &&
-- 
2.28.0.762.g324f61785e


^ permalink raw reply	[flat|nested] 3+ messages in thread

* [PATCHv3 2/2] git-p4: fix `unshelve` bug finding parent commit
  2020-09-20  8:49 ` [PATCHv3 1/2] git-p4: demonstrate `unshelve` bug Luke Diamand
@ 2020-09-20  8:49   ` Luke Diamand
  0 siblings, 0 replies; 3+ messages in thread
From: Luke Diamand @ 2020-09-20  8:49 UTC (permalink / raw)
  To: git; +Cc: Liu Xuhui (Jackson), Eric Sunshine, Luke Diamand

`unshelve` was using HEAD^$n to find the parent commit. This meant that
any intervening commits between HEAD and the last git-p4 commit would
cause the unshelve to fail.

e.g.
    123ab Local git-only commit
    234bc Another local git-only commit
    345cd Perforce tip revision

Unshelve needs to find 345cd.

Use HEAD~$n instead.

Reported-by: Liu Xuhui (Jackson) <Xuhui.Liu@amd.com>
Signed-off-by: Luke Diamand <luke@diamand.org>
---
 git-p4.py           | 2 +-
 t/t9832-unshelve.sh | 2 +-
 2 files changed, 2 insertions(+), 2 deletions(-)

diff --git a/git-p4.py b/git-p4.py
index ca79dc0900..4433ca53de 100755
--- a/git-p4.py
+++ b/git-p4.py
@@ -4237,7 +4237,7 @@ def findLastP4Revision(self, starting_point):
         """
 
         for parent in (range(65535)):
-            log = extractLogMessageFromGitCommit("{0}^{1}".format(starting_point, parent))
+            log = extractLogMessageFromGitCommit("{0}~{1}".format(starting_point, parent))
             settings = extractSettingsGitLog(log)
             if 'change' in settings:
                 return settings
diff --git a/t/t9832-unshelve.sh b/t/t9832-unshelve.sh
index c08234bea0..c2200a5b69 100755
--- a/t/t9832-unshelve.sh
+++ b/t/t9832-unshelve.sh
@@ -80,7 +80,7 @@ EOF
 	)
 '
 
-test_expect_failure 'update shelved changelist and re-unshelve' '
+test_expect_success 'update shelved changelist and re-unshelve' '
 	test_when_finished cleanup_git &&
 	(
 		cd "$cli" &&
-- 
2.28.0.762.g324f61785e


^ permalink raw reply	[flat|nested] 3+ messages in thread

end of thread, other threads:[~2020-09-20  8:49 UTC | newest]

Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-09-20  8:49 [PATCHv3 0/2] git-p4: unshelve uses HEAD^n, not HEAD~n Luke Diamand
2020-09-20  8:49 ` [PATCHv3 1/2] git-p4: demonstrate `unshelve` bug Luke Diamand
2020-09-20  8:49   ` [PATCHv3 2/2] git-p4: fix `unshelve` bug finding parent commit Luke Diamand

git@vger.kernel.org list mirror (unofficial, one of many)

This inbox may be cloned and mirrored by anyone:

	git clone --mirror https://public-inbox.org/git
	git clone --mirror http://ou63pmih66umazou.onion/git
	git clone --mirror http://czquwvybam4bgbro.onion/git
	git clone --mirror http://hjrcffqmbrq6wope.onion/git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V1 git git/ https://public-inbox.org/git \
		git@vger.kernel.org
	public-inbox-index git

Example config snippet for mirrors.
Newsgroups are available over NNTP:
	nntp://news.public-inbox.org/inbox.comp.version-control.git
	nntp://7fh6tueqddpjyxjmgtdiueylzoqt6pt7hec3pukyptlmohoowvhde4yd.onion/inbox.comp.version-control.git
	nntp://ie5yzdi7fg72h7s4sdcztq5evakq23rdt33mfyfcddc5u3ndnw24ogqd.onion/inbox.comp.version-control.git
	nntp://4uok3hntl7oi7b4uf4rtfwefqeexfzil2w6kgk2jn5z2f764irre7byd.onion/inbox.comp.version-control.git
	nntp://news.gmane.io/gmane.comp.version-control.git
 note: .onion URLs require Tor: https://www.torproject.org/

code repositories for project(s) associated with this inbox:

	https://80x24.org/mirrors/git.git

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git