tests/test-subrepo-svn.t
branchstable
changeset 15607 fab28a577a38
parent 15372 695ac6aca77f
child 16073 b254f827b7a6
child 16450 c9c8c9053119
equal deleted inserted replaced
15604:b8d8599410da 15607:fab28a577a38
    35   Adding         externals/other
    35   Adding         externals/other
    36   Adding         src
    36   Adding         src
    37   Adding         src/alpha
    37   Adding         src/alpha
    38   Transmitting file data ..
    38   Transmitting file data ..
    39   Committed revision 1.
    39   Committed revision 1.
    40   $ svn up
    40   $ svn up -q
    41   At revision 1.
       
    42   $ echo "externals -r1 $SVNREPO/externals" > extdef
    41   $ echo "externals -r1 $SVNREPO/externals" > extdef
    43   $ svn propset -F extdef svn:externals src
    42   $ svn propset -F extdef svn:externals src
    44   property 'svn:externals' set on 'src'
    43   property 'svn:externals' set on 'src'
    45   $ svn ci -m 'Setting externals'
    44   $ svn ci -m 'Setting externals'
    46   Sending        src
    45   Sending        src
   103   parent: 1:* tip (glob)
   102   parent: 1:* tip (glob)
   104    1
   103    1
   105   branch: default
   104   branch: default
   106   commit: 1 modified, 1 subrepos
   105   commit: 1 modified, 1 subrepos
   107   update: (current)
   106   update: (current)
   108   $ hg commit --subrepos -m 'Message!'
   107   $ hg commit --subrepos -m 'Message!' | grep -v Updating
   109   committing subrepository s
   108   committing subrepository s
   110   Sending*s/alpha (glob)
   109   Sending*s/alpha (glob)
   111   Transmitting file data .
   110   Transmitting file data .
   112   Committed revision 3.
   111   Committed revision 3.
   113   
   112   
   114   Fetching external item into '$TESTTMP/sub/t/s/externals'
   113   Fetching external item into '*s/externals'* (glob)
   115   External at revision 1.
   114   External at revision 1.
   116   
   115   
   117   At revision 3.
   116   At revision 3.
   118   $ hg debugsub
   117   $ hg debugsub
   119   path s
   118   path s
   127 bringing any changes.
   126 bringing any changes.
   128 
   127 
   129   $ svn mkdir "$SVNREPO/unrelated" -m 'create unrelated'
   128   $ svn mkdir "$SVNREPO/unrelated" -m 'create unrelated'
   130   
   129   
   131   Committed revision 4.
   130   Committed revision 4.
   132   $ svn up s
   131   $ svn up -q s
   133   
       
   134   Fetching external item into 's/externals'
       
   135   External at revision 1.
       
   136   
       
   137   At revision 4.
       
   138   $ hg sum
   132   $ hg sum
   139   parent: 2:* tip (glob)
   133   parent: 2:* tip (glob)
   140    Message!
   134    Message!
   141   branch: default
   135   branch: default
   142   commit: (clean)
   136   commit: (clean)
   149   $ hg st
   143   $ hg st
   150 
   144 
   151 add a commit from svn
   145 add a commit from svn
   152 
   146 
   153   $ cd "$WCROOT"/src
   147   $ cd "$WCROOT"/src
   154   $ svn up
   148   $ svn up -q
   155   U    alpha
       
   156   
       
   157   Fetching external item into 'externals'
       
   158   A    externals/other
       
   159   Updated external to revision 1.
       
   160   
       
   161   Updated to revision 4.
       
   162   $ echo xyz >> alpha
   149   $ echo xyz >> alpha
   163   $ svn propset svn:mime-type 'text/xml' alpha
   150   $ svn propset svn:mime-type 'text/xml' alpha
   164   property 'svn:mime-type' set on 'alpha'
   151   property 'svn:mime-type' set on 'alpha'
   165   $ svn ci -m 'amend a from svn'
   152   $ svn ci -m 'amend a from svn'
   166   Sending        src/alpha
   153   Sending        *alpha (glob)
   167   Transmitting file data .
   154   Transmitting file data .
   168   Committed revision 5.
   155   Committed revision 5.
   169   $ cd ../../sub/t
   156   $ cd ../../sub/t
   170 
   157 
   171 this commit from hg will fail
   158 this commit from hg will fail
   172 
   159 
   173   $ echo zzz >> s/alpha
   160   $ echo zzz >> s/alpha
   174   $ hg ci --subrepos -m 'amend alpha from hg'
   161   $ (hg ci --subrepos -m 'amend alpha from hg' 2>&1; echo "[$?]") | grep -vi 'out of date'
   175   committing subrepository s
   162   committing subrepository s
   176   abort: svn: Commit failed (details follow):
   163   abort: svn:*Commit failed (details follow): (glob)
   177   svn: (Out of date)?.*/src/alpha.*(is out of date)? (re)
       
   178   [255]
   164   [255]
   179   $ svn revert -q s/alpha
   165   $ svn revert -q s/alpha
   180 
   166 
   181 this commit fails because of meta changes
   167 this commit fails because of meta changes
   182 
   168 
   183   $ svn propset svn:mime-type 'text/html' s/alpha
   169   $ svn propset svn:mime-type 'text/html' s/alpha
   184   property 'svn:mime-type' set on 's/alpha'
   170   property 'svn:mime-type' set on 's/alpha'
   185   $ hg ci --subrepos -m 'amend alpha from hg'
   171   $ (hg ci --subrepos -m 'amend alpha from hg' 2>&1; echo "[$?]") | grep -vi 'out of date'
   186   committing subrepository s
   172   committing subrepository s
   187   abort: svn: Commit failed (details follow):
   173   abort: svn:*Commit failed (details follow): (glob)
   188   svn: (Out of date)?.*/src/alpha.*(is out of date)? (re)
       
   189   [255]
   174   [255]
   190   $ svn revert -q s/alpha
   175   $ svn revert -q s/alpha
   191 
   176 
   192 this commit fails because of externals changes
   177 this commit fails because of externals changes
   193 
   178 
   226   $ hg clone t tc | fix_path
   211   $ hg clone t tc | fix_path
   227   updating to branch default
   212   updating to branch default
   228   A    tc/s/alpha
   213   A    tc/s/alpha
   229    U   tc/s
   214    U   tc/s
   230   
   215   
   231   Fetching external item into 'tc/s/externals'
   216   Fetching external item into 'tc/s/externals'* (glob)
   232   A    tc/s/externals/other
   217   A    tc/s/externals/other
   233   Checked out external at revision 1.
   218   Checked out external at revision 1.
   234   
   219   
   235   Checked out revision 3.
   220   Checked out revision 3.
   236   A    tc/subdir/s/alpha
   221   A    tc/subdir/s/alpha
   237    U   tc/subdir/s
   222    U   tc/subdir/s
   238   
   223   
   239   Fetching external item into 'tc/subdir/s/externals'
   224   Fetching external item into 'tc/subdir/s/externals'* (glob)
   240   A    tc/subdir/s/externals/other
   225   A    tc/subdir/s/externals/other
   241   Checked out external at revision 1.
   226   Checked out external at revision 1.
   242   
   227   
   243   Checked out revision 2.
   228   Checked out revision 2.
   244   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   229   3 files updated, 0 files merged, 0 files removed, 0 files unresolved
   270   $ cd s
   255   $ cd s
   271   $ echo c0 > alpha
   256   $ echo c0 > alpha
   272   $ echo c1 > f1
   257   $ echo c1 > f1
   273   $ echo c1 > f2
   258   $ echo c1 > f2
   274   $ svn add f1 -q
   259   $ svn add f1 -q
   275   $ svn status
   260   $ svn status | sort
       
   261   
   276   ? *    a (glob)
   262   ? *    a (glob)
       
   263   ? *    f2 (glob)
       
   264   A *    f1 (glob)
       
   265   M *    alpha (glob)
       
   266   Performing status on external item at 'externals'* (glob)
   277   X *    externals (glob)
   267   X *    externals (glob)
   278   ? *    f2 (glob)
       
   279   M *    alpha (glob)
       
   280   A *    f1 (glob)
       
   281   
       
   282   Performing status on external item at 'externals'
       
   283   $ cd ../..
   268   $ cd ../..
   284   $ hg -R t update -C
   269   $ hg -R t update -C
   285   
   270   
   286   Fetching external item into 't/s/externals'
   271   Fetching external item into 't/s/externals'* (glob)
   287   Checked out external at revision 1.
   272   Checked out external at revision 1.
   288   
   273   
   289   Checked out revision 3.
   274   Checked out revision 3.
   290   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   275   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   291   $ cd t/s
   276   $ cd t/s
   293   ? *    a (glob)
   278   ? *    a (glob)
   294   X *    externals (glob)
   279   X *    externals (glob)
   295   ? *    f1 (glob)
   280   ? *    f1 (glob)
   296   ? *    f2 (glob)
   281   ? *    f2 (glob)
   297   
   282   
   298   Performing status on external item at 'externals'
   283   Performing status on external item at 'externals'* (glob)
   299 
   284 
   300 Sticky subrepositories, no changes
   285 Sticky subrepositories, no changes
   301   $ cd $TESTTMP/sub/t
   286   $ cd $TESTTMP/sub/t
   302   $ hg id -n
   287   $ hg id -n
   303   2
   288   2
   304   $ cd s
   289   $ cd s
   305   $ svnversion
   290   $ svnversion
   306   3
   291   3
   307   $ cd ..
   292   $ cd ..
   308   $ hg update 1
   293   $ hg update 1
   309   U    $TESTTMP/sub/t/s/alpha
   294   U    *s/alpha (glob)
   310   
   295   
   311   Fetching external item into '$TESTTMP/sub/t/s/externals'
   296   Fetching external item into '*s/externals'* (glob)
   312   Checked out external at revision 1.
   297   Checked out external at revision 1.
   313   
   298   
   314   Checked out revision 2.
   299   Checked out revision 2.
   315   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   300   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   316   $ hg id -n
   301   $ hg id -n
   342   $ cd s
   327   $ cd s
   343   $ svnversion
   328   $ svnversion
   344   2M
   329   2M
   345   $ cd ..
   330   $ cd ..
   346   $ hg update --clean tip
   331   $ hg update --clean tip
   347   U    $TESTTMP/sub/t/s/alpha
   332   U    *s/alpha (glob)
   348   
   333   
   349   Fetching external item into '$TESTTMP/sub/t/s/externals'
   334   Fetching external item into '*s/externals'* (glob)
   350   Checked out external at revision 1.
   335   Checked out external at revision 1.
   351   
   336   
   352   Checked out revision 3.
   337   Checked out revision 3.
   353   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   338   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   354 
   339 
   358   $ cd s
   343   $ cd s
   359   $ svnversion
   344   $ svnversion
   360   3
   345   3
   361   $ cd ..
   346   $ cd ..
   362   $ cd s
   347   $ cd s
   363   $ svn update -r 1
   348   $ svn update -qr 1
   364   U    alpha
       
   365    U   .
       
   366   
       
   367   Fetching external item into 'externals'
       
   368   Updated external to revision 1.
       
   369   
       
   370   Updated to revision 1.
       
   371   $ cd ..
   349   $ cd ..
   372   $ hg update 1
   350   $ hg update 1
   373    subrepository sources for s differ (in checked out version)
   351    subrepository sources for s differ (in checked out version)
   374   use (l)ocal source (1) or (r)emote source (2)?
   352   use (l)ocal source (1) or (r)emote source (2)?
   375    l
   353    l
   402   $ svnversion
   380   $ svnversion
   403   1M
   381   1M
   404   $ cd ..
   382   $ cd ..
   405 
   383 
   406 Sticky repository, update --clean
   384 Sticky repository, update --clean
   407   $ hg update --clean tip
   385   $ hg update --clean tip | grep -v s/externals/other
   408   U    $TESTTMP/sub/t/s/alpha
   386   U    *s/alpha (glob)
   409    U   $TESTTMP/sub/t/s
   387    U   *s (glob)
   410   
   388   
   411   Fetching external item into '$TESTTMP/sub/t/s/externals'
   389   Fetching external item into '*s/externals'* (glob)
   412   Checked out external at revision 1.
   390   Checked out external at revision 1.
   413   
   391   
   414   Checked out revision 3.
   392   Checked out revision 3.
   415   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   393   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   416   $ hg id -n
   394   $ hg id -n
   420   3
   398   3
   421   $ cd ..
   399   $ cd ..
   422 
   400 
   423 Test subrepo already at intended revision:
   401 Test subrepo already at intended revision:
   424   $ cd s
   402   $ cd s
   425   $ svn update -r 2
   403   $ svn update -qr 2
   426   U    alpha
       
   427   
       
   428   Fetching external item into 'externals'
       
   429   Updated external to revision 1.
       
   430   
       
   431   Updated to revision 2.
       
   432   $ cd ..
   404   $ cd ..
   433   $ hg update 1
   405   $ hg update 1
   434   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   406   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   435   $ hg id -n
   407   $ hg id -n
   436   1+
   408   1+
   447   $ echo epsilon.py > dir/epsilon.py
   419   $ echo epsilon.py > dir/epsilon.py
   448   $ svn add dir
   420   $ svn add dir
   449   A         dir
   421   A         dir
   450   A         dir/epsilon.py
   422   A         dir/epsilon.py
   451   $ svn ci -m 'Add dir/epsilon.py'
   423   $ svn ci -m 'Add dir/epsilon.py'
   452   Adding         src/dir
   424   Adding         *dir (glob)
   453   Adding         src/dir/epsilon.py
   425   Adding         *dir/epsilon.py (glob)
   454   Transmitting file data .
   426   Transmitting file data .
   455   Committed revision 6.
   427   Committed revision 6.
   456   $ cd ../..
   428   $ cd ../..
   457   $ hg init rebaserepo
   429   $ hg init rebaserepo
   458   $ cd rebaserepo
   430   $ cd rebaserepo
   464   $ echo a > a
   436   $ echo a > a
   465   $ hg ci -Am adda
   437   $ hg ci -Am adda
   466   adding a
   438   adding a
   467   $ hg up 0
   439   $ hg up 0
   468   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   440   0 files updated, 0 files merged, 1 files removed, 0 files unresolved
   469   $ svn up -r6 s
   441   $ svn up -qr6 s
   470   A    s/dir
       
   471   A    s/dir/epsilon.py
       
   472   
       
   473   Fetching external item into 's/externals'
       
   474   Updated external to revision 1.
       
   475   
       
   476   Updated to revision 6.
       
   477   $ hg ci -m updatesub
   442   $ hg ci -m updatesub
   478   committing subrepository s
   443   committing subrepository s
   479   created new head
   444   created new head
   480   $ echo pyc > s/dir/epsilon.pyc
   445   $ echo pyc > s/dir/epsilon.pyc
   481   $ hg up 1
   446   $ hg up 1
   482   D    $TESTTMP/rebaserepo/s/dir
   447   D    *s/dir (glob)
   483   
   448   
   484   Fetching external item into '$TESTTMP/rebaserepo/s/externals'
   449   Fetching external item into '*s/externals'* (glob)
   485   Checked out external at revision 1.
   450   Checked out external at revision 1.
   486   
   451   
   487   Checked out revision 5.
   452   Checked out revision 5.
   488   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   453   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   489   $ if "$TESTDIR/hghave" -q svn15; then
   454   $ if "$TESTDIR/hghave" -q svn15; then
   508   created new head
   473   created new head
   509 
   474 
   510 Switching back to the head where we have another path mapped to the
   475 Switching back to the head where we have another path mapped to the
   511 same subrepo should work if the subrepo is clean.
   476 same subrepo should work if the subrepo is clean.
   512   $ hg co other
   477   $ hg co other
   513   A    $TESTTMP/rebaserepo/obstruct/other
   478   A    *obstruct/other (glob)
   514   Checked out revision 1.
   479   Checked out revision 1.
   515   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   480   2 files updated, 0 files merged, 0 files removed, 0 files unresolved
   516 
   481 
   517 This is surprising, but is also correct based on the current code:
   482 This is surprising, but is also correct based on the current code:
   518   $ echo "updating should (maybe) fail" > obstruct/other
   483   $ echo "updating should (maybe) fail" > obstruct/other
   521   [255]
   486   [255]
   522 
   487 
   523 Point to a Subversion branch which has since been deleted and recreated
   488 Point to a Subversion branch which has since been deleted and recreated
   524 First, create that condition in the repository.
   489 First, create that condition in the repository.
   525 
   490 
   526   $ hg ci --subrepos -m cleanup
   491   $ hg ci --subrepos -m cleanup | grep -v Updating
   527   committing subrepository obstruct
   492   committing subrepository obstruct
   528   Sending        obstruct/other
   493   Sending        obstruct/other
   529   Transmitting file data .
   494   Transmitting file data .
   530   Committed revision 7.
   495   Committed revision 7.
   531   At revision 7.
   496   At revision 7.
   548   
   513   
   549   Committed revision 11.
   514   Committed revision 11.
   550   $ svn copy -m "recreate branch" $SVNREPO/trunk $SVNREPO/branch
   515   $ svn copy -m "recreate branch" $SVNREPO/trunk $SVNREPO/branch
   551   
   516   
   552   Committed revision 12.
   517   Committed revision 12.
   553   $ svn up
   518   $ svn up -q
   554   D    somethingold
       
   555   Updated to revision 12.
       
   556   $ echo "something new" > somethingnew
   519   $ echo "something new" > somethingnew
   557   $ svn add somethingnew
   520   $ svn add somethingnew
   558   A         somethingnew
   521   A         somethingnew
   559   $ svn ci -m 'Something new'
   522   $ svn ci -m 'Something new'
   560   Adding         somethingnew
   523   Adding         somethingnew
   567   Checked out revision 10.
   530   Checked out revision 10.
   568   $ echo "recreated =        [svn]       $SVNREPO/branch" >> .hgsub
   531   $ echo "recreated =        [svn]       $SVNREPO/branch" >> .hgsub
   569   $ hg ci -m addsub
   532   $ hg ci -m addsub
   570   committing subrepository recreated
   533   committing subrepository recreated
   571   $ cd recreated
   534   $ cd recreated
   572   $ svn up
   535   $ svn up -q
   573   D    somethingold
       
   574   A    somethingnew
       
   575   Updated to revision 13.
       
   576   $ cd ..
   536   $ cd ..
   577   $ hg ci -m updatesub
   537   $ hg ci -m updatesub
   578   committing subrepository recreated
   538   committing subrepository recreated
   579   $ hg up -r-2
   539   $ hg up -r-2
   580   D    $TESTTMP/rebaserepo/recreated/somethingnew
   540   D    *recreated/somethingnew (glob)
   581   A    $TESTTMP/rebaserepo/recreated/somethingold
   541   A    *recreated/somethingold (glob)
   582   Checked out revision 10.
   542   Checked out revision 10.
   583   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   543   1 files updated, 0 files merged, 0 files removed, 0 files unresolved
   584   $ test -f recreated/somethingold
   544   $ test -f recreated/somethingold
   585 
   545