diff tests/test-subrepo-svn.t @ 13417:0748e18be470

subrepos: prompt on conflicts on update with dirty subrepos Consider a repository with a single subrepository. The changesets in the main repository reference the subrepository changesets like this: m0 -> s0 m1 -> s1 m2 -> s2 Starting from a state (m1, s0), doing 'hg update m2' in the main repository will yield a conflict: the subrepo is at revision s0 but the target revision says it should be at revision s2. Before this change, Mercurial would do (m1, s0) -> (m2, s2) and thus ignore the conflict between the working copy and the target revision. With this change, the user is prompted to resolve the conflict by choosing which revision he wants. This is consistent with 'hg merge', which also prompts the user when it detects conflicts in the merged .hgsubstate files. The prompt looks like this: $ hg update tip subrepository sources for my-subrepo differ use (l)ocal source (fc627a69481f) or (r)emote source (12a213df6fa9)?
author Erik Zielke <ez@aragost.com>
date Wed, 09 Feb 2011 10:53:09 +0100
parents 1f2b2c33d386
children 67fbe566eff1
line wrap: on
line diff
--- a/tests/test-subrepo-svn.t	Wed Feb 16 01:29:26 2011 +0100
+++ b/tests/test-subrepo-svn.t	Wed Feb 09 10:53:09 2011 +0100
@@ -296,3 +296,145 @@
   ? *    f2 (glob)
   
   Performing status on external item at 'externals'
+
+Sticky subrepositories, no changes
+  $ cd $TESTTMP/sub/t
+  $ hg id -n
+  2
+  $ cd s
+  $ svnversion
+  3
+  $ cd ..
+  $ hg update 1
+  U    $TESTTMP/sub/t/s/alpha
+  
+  Fetching external item into '$TESTTMP/sub/t/s/externals'
+  Checked out external at revision 1.
+  
+  Checked out revision 2.
+  2 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg id -n
+  1
+  $ cd s
+  $ svnversion
+  2
+  $ cd ..
+
+Sticky subrepositorys, file changes
+  $ touch s/f1
+  $ cd s
+  $ svn add f1
+  A         f1
+  $ cd ..
+  $ hg id -n
+  1
+  $ cd s
+  $ svnversion
+  2M
+  $ cd ..
+  $ hg update tip
+   subrepository sources for s differ
+  use (l)ocal source (2) or (r)emote source (3)?
+   l
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg id -n
+  2+
+  $ cd s
+  $ svnversion
+  2M
+  $ cd ..
+  $ hg update --clean tip
+  U    $TESTTMP/sub/t/s/alpha
+  
+  Fetching external item into '$TESTTMP/sub/t/s/externals'
+  Checked out external at revision 1.
+  
+  Checked out revision 3.
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+
+Sticky subrepository, revision updates
+  $ hg id -n
+  2
+  $ cd s
+  $ svnversion
+  3
+  $ cd ..
+  $ cd s
+  $ svn update -r 1
+  U    alpha
+   U   .
+  
+  Fetching external item into 'externals'
+  Updated external to revision 1.
+  
+  Updated to revision 1.
+  $ cd ..
+  $ hg update 1
+   subrepository sources for s differ (in checked out version)
+  use (l)ocal source (1) or (r)emote source (2)?
+   l
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg id -n
+  1+
+  $ cd s
+  $ svnversion
+  1
+  $ cd ..
+
+Sticky subrepository, file changes and revision updates
+  $ touch s/f1
+  $ cd s
+  $ svn add f1
+  A         f1
+  $ svnversion
+  1M
+  $ cd ..
+  $ hg id -n
+  1+
+  $ hg update tip
+   subrepository sources for s differ
+  use (l)ocal source (1) or (r)emote source (3)?
+   l
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg id -n
+  2
+  $ cd s
+  $ svnversion
+  1M
+  $ cd ..
+
+Sticky repository, update --clean
+  $ hg update --clean tip
+  U    $TESTTMP/sub/t/s/alpha
+   U   $TESTTMP/sub/t/s
+  
+  Fetching external item into '$TESTTMP/sub/t/s/externals'
+  Checked out external at revision 1.
+  
+  Checked out revision 3.
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg id -n
+  2
+  $ cd s
+  $ svnversion
+  3
+  $ cd ..
+
+Test subrepo already at intended revision:
+  $ cd s
+  $ svn update -r 2
+  U    alpha
+  
+  Fetching external item into 'externals'
+  Updated external to revision 1.
+  
+  Updated to revision 2.
+  $ cd ..
+  $ hg update 1
+  1 files updated, 0 files merged, 0 files removed, 0 files unresolved
+  $ hg id -n
+  1+
+  $ cd s
+  $ svnversion
+  2
+  $ cd ..