[PATCH 2 of 4] tests: add test for merging flags across renames

Laurens Holst laurens.nospam at grauw.nl
Tue Dec 27 15:34:57 CST 2011


Op 27-12-2011 22:31, Laurens Holst schreef:
> # HG changeset patch
> # User Laurens Holst<laurens.hg at grauw.nl>
> # Date 1325009759 -3600
> # Node ID 1d836a646d9e5d26843e461b8d43f77d694df0b9
> # Parent  3317d5c34f384c6d1d8440e19980a2261beecc7a
> tests: add test for merging flags across renames
>
> diff -r 3317d5c34f38 -r 1d836a646d9e tests/test-merge-types.t
> --- a/tests/test-merge-types.t	Wed Dec 21 18:20:15 2011 +0100
> +++ b/tests/test-merge-types.t	Tue Dec 27 19:15:59 2011 +0100
> @@ -3,8 +3,11 @@
>     $ hg init
>
>     $ echo a>  a
> +  $ mkdir dir
> +  $ echo a>  dir/a
>     $ hg ci -Amadd
>     adding a
> +  adding dir/a
>
>     $ chmod +x a
>     $ hg ci -mexecutable
> @@ -20,7 +23,7 @@
>       searching for copies back to rev 1
>     resolving manifests
>      overwrite: False, partial: False
> -   ancestor: c334dc3be0da, local: 521a1e40188f+, remote: 3574f3e69b1c
> +   ancestor: dc8452f1f7df, local: 300b353ff13f+, remote: 5d0a685473c5
>      conflicting flags for a
>     (n)one, e(x)ec or sym(l)ink? n
>      a: update permissions ->  e
> @@ -48,7 +51,7 @@
>       searching for copies back to rev 1
>     resolving manifests
>      overwrite: False, partial: False
> -   ancestor: c334dc3be0da, local: 3574f3e69b1c+, remote: 521a1e40188f
> +   ancestor: dc8452f1f7df, local: 5d0a685473c5+, remote: 300b353ff13f
>      conflicting flags for a
>     (n)one, e(x)ec or sym(l)ink? n
>      a: remote is newer ->  g
> @@ -70,3 +73,207 @@
>     >  fi
>     a has no flags (default for conflicts)
>
> +Executable in other parent, moved in local:
> +
> +  $ hg up 0 -C
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  $ hg mv a b
> +  $ hg ci -mmove
> +  created new head
> +  $ hg merge -r 1 --debug
> +    searching for copies back to rev 1
> +    unmatched files in local:
> +     b
> +    all copies found (* = to merge, ! = divergent):
> +     b ->  a
> +    checking for directory renames
> +  resolving manifests
> +   overwrite: False, partial: False
> +   ancestor: dc8452f1f7df, local: f95452bac98f+, remote: 5d0a685473c5
> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  (branch merge, don't forget to commit)
> +
> +  $ if [ ! -f b ]; then
> +>     echo b does not exist
> +>  elif [ -h b ]; then
> +>     echo b is a symlink
> +>     $TESTDIR/readlink.py b
> +>  elif [ -x b ]; then
> +>      echo b is executable
> +>  else
> +>      echo b has no flags
> +>  fi
> +  b has no flags

This.

> +
> +Executable in local, moved in other parent:
> +
> +  $ hg up 1 -C
> +  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
> +  $ hg merge -r 3 --debug
> +    searching for copies back to rev 1
> +    unmatched files in other:
> +     b
> +    all copies found (* = to merge, ! = divergent):
> +     b ->  a
> +    checking for directory renames
> +  resolving manifests
> +   overwrite: False, partial: False
> +   ancestor: dc8452f1f7df, local: 5d0a685473c5+, remote: f95452bac98f
> +   a: other deleted ->  r
> +   b: remote created ->  g
> +  updating: a 1/2 files (50.00%)
> +  removing a
> +  updating: b 2/2 files (100.00%)
> +  getting b
> +  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
> +  (branch merge, don't forget to commit)
> +
> +  $ if [ ! -f b ]; then
> +>     echo b does not exist
> +>  elif [ -h b ]; then
> +>     echo b is a symlink
> +>     $TESTDIR/readlink.py b
> +>  elif [ -x b ]; then
> +>      echo b is executable
> +>  else
> +>      echo b has no flags
> +>  fi
> +  b has no flags

This.

> +
> +Executable in other parent, copied in local:
> +
> +  $ hg up 0 -C
> +  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
> +  $ hg cp a b
> +  $ hg ci -mmove
> +  created new head
> +  $ hg merge -r 1 --debug
> +    searching for copies back to rev 1
> +    unmatched files in local:
> +     b
> +    all copies found (* = to merge, ! = divergent):
> +     b ->  a
> +    checking for directory renames
> +  resolving manifests
> +   overwrite: False, partial: False
> +   ancestor: dc8452f1f7df, local: a810d3446267+, remote: 5d0a685473c5
> +   a: update permissions ->  e
> +  updating: a 1/1 files (100.00%)
> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  (branch merge, don't forget to commit)
> +
> +  $ if [ ! -f b ]; then
> +>     echo b does not exist
> +>  elif [ -h b ]; then
> +>     echo b is a symlink
> +>     $TESTDIR/readlink.py b
> +>  elif [ -x b ]; then
> +>      echo b is executable
> +>  else
> +>      echo b has no flags
> +>  fi
> +  b has no flags

This.

> +
> +Executable in local, copied in other parent:
> +
> +  $ hg up 1 -C
> +  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
> +  $ hg merge -r 4 --debug
> +    searching for copies back to rev 1
> +    unmatched files in other:
> +     b
> +    all copies found (* = to merge, ! = divergent):
> +     b ->  a
> +    checking for directory renames
> +  resolving manifests
> +   overwrite: False, partial: False
> +   ancestor: dc8452f1f7df, local: 5d0a685473c5+, remote: a810d3446267
> +   b: remote created ->  g
> +  updating: b 1/1 files (100.00%)
> +  getting b
> +  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  (branch merge, don't forget to commit)
> +
> +  $ if [ ! -f b ]; then
> +>     echo b does not exist
> +>  elif [ -h b ]; then
> +>     echo b is a symlink
> +>     $TESTDIR/readlink.py b
> +>  elif [ -x b ]; then
> +>      echo b is executable
> +>  else
> +>      echo b has no flags
> +>  fi
> +  b has no flags

This.

> +
> +Executable in other parent, directory rename in local:
> +
> +  $ hg up 0 -C
> +  0 files updated, 0 files merged, 1 files removed, 0 files unresolved
> +  $ hg mv dir dir2
> +  moving dir/a to dir2/a
> +  $ hg ci -mdirectorymove
> +  created new head
> +  $ hg merge -r 1 --debug
> +    searching for copies back to rev 1
> +    unmatched files in local:
> +     dir2/a
> +    all copies found (* = to merge, ! = divergent):
> +     dir2/a ->  dir/a
> +    checking for directory renames
> +    dir dir/ ->  dir2/
> +  resolving manifests
> +   overwrite: False, partial: False
> +   ancestor: dc8452f1f7df, local: b3f243fb658c+, remote: 5d0a685473c5
> +   a: update permissions ->  e
> +  updating: a 1/1 files (100.00%)
> +  0 files updated, 0 files merged, 0 files removed, 0 files unresolved
> +  (branch merge, don't forget to commit)
> +
> +  $ if [ ! -f dir2/a ]; then
> +>     echo dir2/a does not exist
> +>  elif [ -h dir2/a ]; then
> +>     echo dir2/a is a symlink
> +>     $TESTDIR/readlink.py dir2/a
> +>  elif [ -x dir2/a ]; then
> +>      echo dir2/a is executable
> +>  else
> +>      echo dir2/a has no flags
> +>  fi
> +  dir2/a has no flags

This.

> +
> +Executable in local, directory rename in other parent:
> +
> +  $ hg up 1 -C
> +  2 files updated, 0 files merged, 1 files removed, 0 files unresolved
> +  $ hg merge -r 5 --debug
> +    searching for copies back to rev 1
> +    unmatched files in other:
> +     dir2/a
> +    all copies found (* = to merge, ! = divergent):
> +     dir2/a ->  dir/a
> +    checking for directory renames
> +    dir dir/ ->  dir2/
> +  resolving manifests
> +   overwrite: False, partial: False
> +   ancestor: dc8452f1f7df, local: 5d0a685473c5+, remote: b3f243fb658c
> +   dir/a: other deleted ->  r
> +   dir2/a: remote created ->  g
> +  updating: dir/a 1/2 files (50.00%)
> +  removing dir/a
> +  updating: dir2/a 2/2 files (100.00%)
> +  getting dir2/a
> +  1 files updated, 0 files merged, 1 files removed, 0 files unresolved
> +  (branch merge, don't forget to commit)
> +
> +  $ if [ ! -f dir2/a ]; then
> +>     echo dir2/a does not exist
> +>  elif [ -h dir2/a ]; then
> +>     echo dir2/a is a symlink
> +>     $TESTDIR/readlink.py dir2/a
> +>  elif [ -x dir2/a ]; then
> +>      echo dir2/a is executable
> +>  else
> +>      echo dir2/a has no flags
> +>  fi
> +  dir2/a has no flags

And this seems odd to me. If the file contents are copied, shouldn’t the 
executable (and symlink) flags for these be copied as well?

~Laurens

-- 
~~ Ushiko-san! Kimi wa doushite, Ushiko-san nan da!! ~~
Laurens Holst, developer, Utrecht, the Netherlands
Website: www.grauw.nl. Working @ www.roughcookie.com


-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 4332 bytes
Desc: S/MIME cryptografische ondertekening
URL: <http://selenic.com/pipermail/mercurial-devel/attachments/20111227/8f1861e2/attachment.bin>


More information about the Mercurial-devel mailing list