pick: Add a test to check that pick pick the right content
$cat>>$HGRCPATH<<EOF>[ui]>interactive=True>[extensions]>EOF$echo"evolve=$(echo $(dirname $TESTDIR))/hgext3rd/evolve/">>$HGRCPATHhgprev&nextmovetoparent/child$hginittest-repo$cdtest-repo$toucha$hgadda$hgcommit-m'added a'$touchb$hgaddb$hgcommit-m'added b'$hgprev0filesupdated,0filesmerged,1filesremoved,0filesunresolved[0]addeda$hgnext1filesupdated,0filesmerged,0filesremoved,0filesunresolved[1]addedbhgprev&nextrespect--quiet$hgprev-q$hgnext-qhgprev-Bshouldmoveactivebookmark$hgbookmarkmark$hgbookmarks*mark1:6e742c9127b3$hgprev-B0filesupdated,0filesmerged,1filesremoved,0filesunresolved[0]addeda$hgbookmarks*mark0:a154386e50d1hgnext-Bshouldmoveactivebookmark$hgnext-B--dry-runhgupdate6e742c9127b3;hgbookmarkmark-r6e742c9127b3;[1]addedb$hgnext-B1filesupdated,0filesmerged,0filesremoved,0filesunresolved[1]addedb$hgbookmarks*mark1:6e742c9127b3hgprevshouldunsetactivebookmark$hgprev--dry-runhgupdatea154386e50d1;[0]addeda$hgprev0filesupdated,0filesmerged,1filesremoved,0filesunresolved[0]addeda$hgbookmarksmark1:6e742c9127b3hgnextshouldmoveactivebookmark$hgbookmarkmark2$hgbookmarksmark1:6e742c9127b3*mark20:a154386e50d1$hgnext--dry-run--color=debughgupdate6e742c9127b3;[[evolve.rev|1]]addedb$hgnext1filesupdated,0filesmerged,0filesremoved,0filesunresolved[1]addedb$hgbookmarksmark1:6e742c9127b3mark20:a154386e50d1$hgbookmark-dmark2$hgbookmarkmarkhgnext/prevshouldnotinterferewithinactivebookmarks$touchc$hgaddc$hgcommit-m'added c'$hgbookmark-r2no-move$hgprev-B0filesupdated,0filesmerged,1filesremoved,0filesunresolved[1]addedb$hgbookmarks*mark1:6e742c9127b3no-move2:4e26ef31f919$hgnext-B1filesupdated,0filesmerged,0filesremoved,0filesunresolved[2]addedc$hgbookmarks*mark2:4e26ef31f919no-move2:4e26ef31f919$hgup10filesupdated,0filesmerged,1filesremoved,0filesunresolved(leavingbookmarkmark)$hgnext-B1filesupdated,0filesmerged,0filesremoved,0filesunresolved[2]addedc$hgbookmarksmark2:4e26ef31f919no-move2:4e26ef31f919$hgprev-B0filesupdated,0filesmerged,1filesremoved,0filesunresolved[1]addedb$hgbookmarksmark2:4e26ef31f919no-move2:4e26ef31f919testprevonroot$hgupnull0filesupdated,0filesmerged,2filesremoved,0filesunresolved$hgprevalreadyatrepositoryroot[1]$hgup12filesupdated,0filesmerged,0filesremoved,0filesunresolvedBehaviorwithlocalmodification--------------------------------$echofoo>modified-bar$hgaddmodified-bar$hgprevabort:uncommittedchanges(doyouwant--merge?)[255]$hgprev--merge0filesupdated,0filesmerged,1filesremoved,0filesunresolved[0]addeda$hgnextabort:uncommittedchanges(doyouwant--merge?)[255]$hgnext--merge1filesupdated,0filesmerged,0filesremoved,0filesunresolved[1]addedbBehaviorwithaspiringchildren-------------------------------$hgrevert--allforgettingmodified-bar$hglog-Gochangeset:2:4e26ef31f919|bookmark:mark|bookmark:no-move|tag:tip|user:test|date:ThuJan0100:00:001970+0000|summary:addedc|@changeset:1:6e742c9127b3|user:test|date:ThuJan0100:00:001970+0000|summary:addedb|ochangeset:0:a154386e50d1user:testdate:ThuJan0100:00:001970+0000summary:addedanochildrenofanykind$hgnext1filesupdated,0filesmerged,0filesremoved,0filesunresolved[2]addedc$hgnextnochildren[1]$hgnext--evolvenochildren[1]$hgprev--dry-run--color=debughgupdate6e742c9127b3;[[evolve.rev|1]]addedb$hgprev0filesupdated,0filesmerged,1filesremoved,0filesunresolved[1]addedbsomeaspiringchildren$hgamend-m'added b (2)'1neworphanchangesets$hgnextnochildren(1unstablechangesetstobeevolvedhere,doyouwant--evolve?)[1]$hgnext--evolve--dry-runmove:[2]addedcatop:[3]addedb(2)hgrebase-r4e26ef31f919-d9ad178109a19(addcoloroutputforsmoketesting)$hgnext--evolve--colordebug[evolve.operation|move:][[evolve.rev|2]]addedcatop:[[evolve.rev|3]]addedb(2)[ui.status|workingdirectorynowat[evolve.node|e3b6d5df389b]]nextwithambiguity$hgprev0filesupdated,0filesmerged,1filesremoved,0filesunresolved[3]addedb(2)$echod>d$hgaddd$hgcommit-m'added d'creatednewhead$hgprev0filesupdated,0filesmerged,1filesremoved,0filesunresolved[3]addedb(2)$hgnext<<EOF>1>EOFambiguousnextchangeset,chooseonetoupdate:0:[e3b6d5df389b]addedc1:[9df671ccd2c7]addeddq:quitthepromptentertheindexoftherevisionyouwanttoselect:11filesupdated,0filesmerged,0filesremoved,0filesunresolved[5]addedd$hgprev0filesupdated,0filesmerged,1filesremoved,0filesunresolved[3]addedb(2)nextwithambiguityinaspiringchildren$hgam-m'added b (3)'2neworphanchangesets$hgnextnochildren(2unstablechangesetstobeevolvedhere,doyouwant--evolve?)[1]$hgnext--evolve<<EOF>0>EOFambiguousnext(unstable)changeset,chooseonetoevolveandupdate:0:[e3b6d5df389b]addedc1:[9df671ccd2c7]addeddq:quitthepromptentertheindexoftherevisionyouwanttoselect:0move:[4]addedcatop:[6]addedb(3)workingdirectorynowat5ce67c2407b0$hglog-GT"{rev}:{node|short}{desc}\n"@7:5ce67c2407b0addedc|o6:d7f119adc759addedb(3)||*5:9df671ccd2c7addedd|||x3:9ad178109a19addedb(2)|/o0:a154386e50d1addeda$hgevolve-r5move:[5]addeddatop:[6]addedb(3)workingdirectoryisnowat47ea25be8aeaprevwithmultipleparents$hglog-GT"{rev}:{node|short}{desc}\n"@8:47ea25be8aeaaddedd||o7:5ce67c2407b0addedc|/o6:d7f119adc759addedb(3)|o0:a154386e50d1addeda$hgmerge-r5ce67c2407b01filesupdated,0filesmerged,0filesremoved,0filesunresolved(branchmerge,don't forget to commit) $ hg ci -m "merge commit" $ hg prev <<EOF>q>EOFmultipleparents,chooseonetoupdate:0:[47ea25be8aea]addedd1:[5ce67c2407b0]addedcq:quitthepromptentertheindexoftherevisionyouwanttoselect:q[8]addedd[7]addedcmultipleparents,explicitlyupdatetoone[1]$hgprev--configui.interactive=False[8]addedd[7]addedcmultipleparents,explicitlyupdatetoone[1]$hgprev<<EOF>1>EOFmultipleparents,chooseonetoupdate:0:[47ea25be8aea]addedd1:[5ce67c2407b0]addedcq:quitthepromptentertheindexoftherevisionyouwanttoselect:10filesupdated,0filesmerged,1filesremoved,0filesunresolved[7]addedc$hglog-GT"{rev}:{node|short}{desc}\n"o9:a4b8c25a87d3mergecommit|\|o8:47ea25be8aeaaddedd||@|7:5ce67c2407b0addedc|/o6:d7f119adc759addedb(3)|o0:a154386e50d1addeda$cd..prevandnextshouldlockproperlyagainstothercommands$hginitrepo$cdrepo$HGEDITOR="sh ${TESTDIR}/fake-editor.sh"$echohi>foo$hgci-Am'one'addingfoo$echobye>foo$hgci-Am'two'$hgamend--edit&$sleep1$hgprevwaitingforlockonworkingdirectoryof$TESTTMP/repoheldbyprocess'*'onhost'*'(glob)gotlockafter[4-6]seconds(re)1filesupdated,0filesmerged,0filesremoved,0filesunresolved[0]one$wait$hgamend--edit&$sleep1$hgnext--evolvewaitingforlockonworkingdirectoryof$TESTTMP/repoheldbyprocess'*'onhost'*'(glob)1neworphanchangesetsgotlockafter[4-6]seconds(re)move:[2]twoatop:[3]oneworkingdirectorynowata7d885c75614$waittestingnext--evolvewhenworkingdirectoryisdirty$hglog-GT"{rev}:{node|short}{desc|firstline}"@4:a7d885c75614two|o3:c741983992fcone$hgup.^1filesupdated,0filesmerged,0filesremoved,0filesunresolved$echofoobar>bar$hgaddbar$hgamend1neworphanchangesets$echobabar>bar$hgnext--evolveabort:uncommittedchanges[255]$cd..Testingthat`next`and`prev`respects`commands.update.check=noconflict`$hginitnoconflict$cdnoconflict$echo"[commands]">> .hg/hgrc $ echo "update.check=noconflict" >> .hg/hgrc $ echo hi > wat $ hg ci -Aqm "added wat" $ echo hi > foo $ hg ci -Aqm "added foo" $ echo hi > bar $ hg ci -Aqm "added bar"testing for `hg prev` $ echo bar > wat $ hg prev 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [1] added foo $ hg diff diff -r cf959ce4e1ff wat --- a/wat Thu Jan 01 00:00:00 1970 +0000 +++ b/wat Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +1,1 @@ -hi +bartesting for `hg next` $ hg next 1 files updated, 0 files merged, 0 files removed, 0 files unresolved [2] added bar $ hg diff diff -r ac3de1218820 wat --- a/wat Thu Jan 01 00:00:00 1970 +0000 +++ b/wat Thu Jan 01 00:00:00 1970 +0000 @@ -1,1 +1,1 @@ -hi +bartest that we dont end up in merge conflicts $ echo bar > bar $ hg prev abort: conflicting changes (do you want --merge?) [255] $ echo hi > bar $ hg prev 0 files updated, 0 files merged, 1 files removed, 0 files unresolved [1] added foo $ echo bar > bar $ hg add bar $ hg next abort: conflicting changes (do you want --merge?) [255]Test that --merge still works fine with commands.update.check setXXX: yes we want --merge and we passed that! $ echo hi > bar $ echo bar >> bar $ hg next --merge merging bar warning: conflicts while merging bar! (edit, then use 'hgresolve--mark') 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hgresolve' to retry unresolved file merges [2] added bar $ echo babar > bar $ hg resolve -m (no more unresolved files)Testing --merge works with other values of commands.update.check alsoXXX: things are broken! $ hg prev --merge --config commands.update.check=abort file 'bar' was deleted in other [destination] but was modified in local [working copy]. What do you want to do? use (c)hanged version, (d)elete, or leave (u)nresolved? 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hgresolve' to retry unresolved file merges [1] added foo $ hg revert --all forgetting bar reverting wat $ hg resolve -m (no more unresolved files) $ echo bar > bar $ hg add bar $ hg next --merge --config commands.update.check=abort merging bar warning: conflicts while merging bar! (edit, then use 'hgresolve--mark') 0 files updated, 0 files merged, 0 files removed, 1 files unresolved use 'hgresolve' to retry unresolved file merges [2] added bar