Patchwork D8532: flags: add a test for merging exec flag change with rename and file change

login
register
mail settings
Submitter phabricator
Date May 16, 2020, 8:11 p.m.
Message ID <differential-rev-PHID-DREV-d3bh4ojrbxpq6akxstze-req@mercurial-scm.org>
Download mbox | patch
Permalink /patch/46319/
State Superseded
Headers show

Comments

phabricator - May 16, 2020, 8:11 p.m.
marmoute created this revision.
Herald added a reviewer: hg-reviewers.
Herald added a subscriber: mercurial-patches.

REVISION SUMMARY
  Changing the file activate other code path that also have bugsā€¦ There are two
  distinct bugs depending of which side of the merge you stand on. They both
  leading to exec flag loss.
  
  We add tests for both, the fix are coming in later changesets.

REPOSITORY
  rHG Mercurial

BRANCH
  stable

REVISION DETAIL
  https://phab.mercurial-scm.org/D8532

AFFECTED FILES
  tests/test-merge-exec.t

CHANGE DETAILS




To: marmoute, #hg-reviewers
Cc: mercurial-patches, mercurial-devel

Patch

diff --git a/tests/test-merge-exec.t b/tests/test-merge-exec.t
--- a/tests/test-merge-exec.t
+++ b/tests/test-merge-exec.t
@@ -133,3 +133,83 @@ 
 
 
   $ cd ..
+
+Testing merging mode change with rename + modification on both side
+===================================================================
+
+
+  $ hg clone base-repo rename+mod-merge-repo
+  updating to branch default
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ cd rename+mod-merge-repo
+
+make "a" executable on one side
+
+  $ chmod +x a
+  $ cat << EOF > a
+  > 1
+  > x
+  > 3
+  > 4
+  > 5
+  > 6
+  > 7
+  > 8
+  > 9
+  > EOF
+  $ hg status
+  M a
+  $ hg ci -m "make a executable, and change start"
+  $ [ -x a ] || echo "executable bit not recorded"
+  $ hg up ".^"
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+make "a" renamed on the other side
+
+  $ hg mv a z
+  $ hg st --copies
+  A z
+    a
+  R a
+  $ cat << EOF > z
+  > 1
+  > 2
+  > 3
+  > 4
+  > 5
+  > 6
+  > 7
+  > x
+  > 9
+  > EOF
+  $ hg ci -m "rename a to z, and change end"
+  created new head
+
+merge them (from the rename side)
+
+  $ hg merge 'desc("make a executable")'
+  merging z and a to z
+  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg st --copies
+  M z
+    a
+  $ [ -x z ] || echo "executable bit lost"
+  executable bit lost
+
+merge them (from the chmod side)
+
+  $ hg up -C 'desc("make a executable")'
+  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
+  $ hg merge 'desc("rename a to z")'
+  merging a and z to z
+  0 files updated, 1 files merged, 0 files removed, 0 files unresolved
+  (branch merge, don't forget to commit)
+  $ hg st --copies
+  M z
+    a
+  R a
+  $ [ -x z ] || echo "executable bit lost"
+  executable bit lost
+
+  $ cd ..