Mercurial > hg
changeset 18756:76d49dab6a00 stable
merge with stable
author | Bryan O'Sullivan <bryano@fb.com> |
---|---|
date | Tue, 19 Mar 2013 16:19:20 -0700 |
parents | 72412afe4c28 (current diff) 605c7c94fd70 (diff) |
children | 1c8e0d6ac3b0 136516cd3d69 |
files | |
diffstat | 18 files changed, 180 insertions(+), 72 deletions(-) [+] |
line wrap: on
line diff
--- a/.hgsigs Mon Mar 11 15:37:28 2013 -0700 +++ b/.hgsigs Tue Mar 19 16:19:20 2013 -0700 @@ -66,3 +66,4 @@ f5fbe15ca7449f2c9a3cf817c86d0ae68b307214 0 iD8DBQBQ+yuYywK+sNU5EO8RAm9JAJoD/UciWvpGeKBcpGtZJBFJVcL/HACghDXSgQ+xQDjB+6uGrdgAQsRR1Lg= a6088c05e43a8aee0472ca3a4f6f8d7dd914ebbf 0 iD8DBQBRDDROywK+sNU5EO8RAh75AJ9uJCGoCWnP0Lv/+XuYs4hvUl+sAgCcD36QgAnuw8IQXrvv684BAXAnHcA= 7511d4df752e61fe7ae4f3682e0a0008573b0402 0 iD8DBQBRFYaoywK+sNU5EO8RAuErAJoDyhXn+lptU3+AevVdwAIeNFyR2gCdHzPHyWd+JDeWCUR+pSOBi8O2ppM= +5b7175377babacce80a6c1e12366d8032a6d4340 0 iD8DBQBRMCYgywK+sNU5EO8RAq1/AKCWKlt9ysibyQgYwoxxIOZv5J8rpwCcDSHQaaf1fFZUTnQsOePwcM2Y/Sg=
--- a/.hgtags Mon Mar 11 15:37:28 2013 -0700 +++ b/.hgtags Tue Mar 19 16:19:20 2013 -0700 @@ -79,3 +79,4 @@ f5fbe15ca7449f2c9a3cf817c86d0ae68b307214 2.5-rc a6088c05e43a8aee0472ca3a4f6f8d7dd914ebbf 2.5 7511d4df752e61fe7ae4f3682e0a0008573b0402 2.5.1 +5b7175377babacce80a6c1e12366d8032a6d4340 2.5.2
--- a/contrib/mergetools.hgrc Mon Mar 11 15:37:28 2013 -0700 +++ b/contrib/mergetools.hgrc Tue Mar 19 16:19:20 2013 -0700 @@ -15,7 +15,7 @@ gvimdiff.regname=path gvimdiff.priority=-9 -vimdiff.args=$local $other $base +vimdiff.args=$local $other $base -c 'redraw | echomsg "hg merge conflict, type \":cq\" to abort vimdiff"' vimdiff.check=changed vimdiff.priority=-10
--- a/hgext/largefiles/basestore.py Mon Mar 11 15:37:28 2013 -0700 +++ b/hgext/largefiles/basestore.py Tue Mar 19 16:19:20 2013 -0700 @@ -59,6 +59,8 @@ missing = [] ui = self.ui + util.makedirs(lfutil.storepath(self.repo, '')) + at = 0 for filename, hash in files: ui.progress(_('getting largefiles'), at, unit='lfile',
--- a/hgext/largefiles/lfcommands.py Mon Mar 11 15:37:28 2013 -0700 +++ b/hgext/largefiles/lfcommands.py Tue Mar 19 16:19:20 2013 -0700 @@ -8,7 +8,7 @@ '''High-level command function for lfconvert, plus the cmdtable.''' -import os +import os, errno import shutil from mercurial import util, match as match_, hg, node, context, error, \ @@ -403,22 +403,13 @@ toget = [] for lfile in lfiles: - # If we are mid-merge, then we have to trust the standin that is in the - # working copy to have the correct hashvalue. This is because the - # original hg.merge() already updated the standin as part of the normal - # merge process -- we just have to update the largefile to match. - if (getattr(repo, "_ismerging", False) and - os.path.exists(repo.wjoin(lfutil.standin(lfile)))): - expectedhash = lfutil.readstandin(repo, lfile) - else: + try: expectedhash = repo[node][lfutil.standin(lfile)].data().strip() - - # if it exists and its hash matches, it might have been locally - # modified before updating and the user chose 'local'. in this case, - # it will not be in any store, so don't look for it. - if ((not os.path.exists(repo.wjoin(lfile)) or - expectedhash != lfutil.hashfile(repo.wjoin(lfile))) and - not lfutil.findfile(repo, expectedhash)): + except IOError, err: + if err.errno == errno.ENOENT: + continue # node must be None and standin wasn't found in wctx + raise + if not lfutil.findfile(repo, expectedhash): toget.append((lfile, expectedhash)) if toget: @@ -435,11 +426,12 @@ pass totalsuccess = 0 totalmissing = 0 - for ctx in cmdutil.walkchangerevs(repo, matchfn, {'rev' : rev}, - prepare): - success, missing = cachelfiles(ui, repo, ctx.node()) - totalsuccess += len(success) - totalmissing += len(missing) + if rev != []: # walkchangerevs on empty list would return all revs + for ctx in cmdutil.walkchangerevs(repo, matchfn, {'rev' : rev}, + prepare): + success, missing = cachelfiles(ui, repo, ctx.node()) + totalsuccess += len(success) + totalmissing += len(missing) ui.status(_("%d additional largefiles cached\n") % totalsuccess) if totalmissing > 0: ui.status(_("%d largefiles failed to download\n") % totalmissing) @@ -458,7 +450,7 @@ if printmessage and lfiles: ui.status(_('getting changed largefiles\n')) printed = True - cachelfiles(ui, repo, '.', lfiles) + cachelfiles(ui, repo, None, lfiles) updated, removed = 0, 0 for f in lfiles: @@ -500,6 +492,8 @@ # use normallookup() to allocate entry in largefiles dirstate, # because lack of it misleads lfilesrepo.status() into # recognition that such cache missing files are REMOVED. + if lfile not in repo[None]: # not switched to normal file + util.unlinkpath(abslfile, ignoremissing=True) lfdirstate.normallookup(lfile) return None # don't try to set the mode else:
--- a/hgext/largefiles/lfutil.py Mon Mar 11 15:37:28 2013 -0700 +++ b/hgext/largefiles/lfutil.py Tue Mar 19 16:19:20 2013 -0700 @@ -225,13 +225,9 @@ standindir = repo.wjoin(shortname) if pats: pats = [os.path.join(standindir, pat) for pat in pats] - elif os.path.isdir(standindir): + else: # no patterns: relative to repo root pats = [standindir] - else: - # no patterns and no standin dir: return matcher that matches nothing - return match_.match(repo.root, None, [], exact=True) - # no warnings about missing files or directories match = scmutil.match(repo[None], pats, opts) match.bad = lambda f, msg: None
--- a/hgext/largefiles/overrides.py Mon Mar 11 15:37:28 2013 -0700 +++ b/hgext/largefiles/overrides.py Tue Mar 19 16:19:20 2013 -0700 @@ -684,15 +684,8 @@ return result def hgmerge(orig, repo, node, force=None, remind=True): - # Mark the repo as being in the middle of a merge, so that - # updatelfiles() will know that it needs to trust the standins in - # the working copy, not in the standins in the current node - repo._ismerging = True - try: - result = orig(repo, node, force, remind) - lfcommands.updatelfiles(repo.ui, repo) - finally: - repo._ismerging = False + result = orig(repo, node, force, remind) + lfcommands.updatelfiles(repo.ui, repo) return result # When we rebase a repository with remotely changed largefiles, we need to @@ -746,7 +739,7 @@ if opts.get('all_largefiles'): revspostpull = len(repo) revs = [] - for rev in xrange(revsprepull + 1, revspostpull): + for rev in xrange(revsprepull, revspostpull): revs.append(repo[rev].rev()) lfcommands.downloadlfiles(ui, repo, revs) return result
--- a/hgext/largefiles/reposetup.py Mon Mar 11 15:37:28 2013 -0700 +++ b/hgext/largefiles/reposetup.py Tue Mar 19 16:19:20 2013 -0700 @@ -299,9 +299,9 @@ lfdirstate = lfutil.openlfdirstate(ui, self) dirtymatch = match_.always(self.root, self.getcwd()) s = lfdirstate.status(dirtymatch, [], False, False, False) - modifiedfiles = [] - for i in s: - modifiedfiles.extend(i) + (unsure, modified, added, removed, _missing, _unknown, + _ignored, _clean) = s + modifiedfiles = unsure + modified + added + removed lfiles = lfutil.listlfiles(self) # this only loops through largefiles that exist (not # removed/renamed)
--- a/mercurial/commands.py Mon Mar 11 15:37:28 2013 -0700 +++ b/mercurial/commands.py Tue Mar 19 16:19:20 2013 -0700 @@ -1066,7 +1066,7 @@ dest = ui.expandpath(dest or 'default-push', dest or 'default') dest, branches = hg.parseurl(dest, opts.get('branch')) other = hg.peer(repo, opts, dest) - revs, checkout = hg.addbranchrevs(repo, other, branches, revs) + revs, checkout = hg.addbranchrevs(repo, repo, branches, revs) heads = revs and map(repo.lookup, revs) or revs outgoing = discovery.findcommonoutgoing(repo, other, onlyheads=heads,
--- a/mercurial/localrepo.py Mon Mar 11 15:37:28 2013 -0700 +++ b/mercurial/localrepo.py Tue Mar 19 16:19:20 2013 -0700 @@ -705,14 +705,18 @@ def setparents(self, p1, p2=nullid): copies = self.dirstate.setparents(p1, p2) + pctx = self[p1] if copies: # Adjust copy records, the dirstate cannot do it, it # requires access to parents manifests. Preserve them # only for entries added to first parent. - pctx = self[p1] for f in copies: if f not in pctx and copies[f] in pctx: self.dirstate.copy(copies[f], f) + if p2 == nullid: + for f, s in sorted(self.dirstate.copies().items()): + if f not in pctx and s not in pctx: + self.dirstate.copy(None, f) def filectx(self, path, changeid=None, fileid=None): """changeid can be a changeset revision, node, or tag.
--- a/mercurial/templatefilters.py Mon Mar 11 15:37:28 2013 -0700 +++ b/mercurial/templatefilters.py Tue Mar 19 16:19:20 2013 -0700 @@ -5,6 +5,7 @@ # This software may be used and distributed according to the terms of the # GNU General Public License version 2 or any later version. +from i18n import _ import cgi, re, os, time, urllib import encoding, node, util, error import hbisect
--- a/tests/test-bundle.t Mon Mar 11 15:37:28 2013 -0700 +++ b/tests/test-bundle.t Tue Mar 19 16:19:20 2013 -0700 @@ -522,6 +522,21 @@ [255] $ cd .. +test to bundle revisions on the newly created branch (issue3828): + + $ hg -q clone -U test test-clone + $ cd test + + $ hg -q branch foo + $ hg commit -m "create foo branch" + $ hg -q outgoing ../test-clone + 9:b4f5acb1ee27 + $ hg -q bundle --branch foo foo.hg ../test-clone + $ hg -R foo.hg -q log -r "bundle()" + 9:b4f5acb1ee27 + + $ cd .. + test for http://mercurial.selenic.com/bts/issue1144 test that verify bundle does not traceback
--- a/tests/test-issue1175.t Mon Mar 11 15:37:28 2013 -0700 +++ b/tests/test-issue1175.t Tue Mar 19 16:19:20 2013 -0700 @@ -31,7 +31,7 @@ b b: searching for copy revision for a b: copy a:b80de5d138758541c5f05265ad144ab9fa86d1db - committed changeset 5:89e8e4be0de296fa3d6dd7825ccc44d7dc0f1f3b + committed changeset 5:732aafbecb501a198b3cc9323ad3899ff04ccf95 $ hg verify checking changesets @@ -44,8 +44,8 @@ # HG changeset patch # User test # Date 0 0 - # Node ID 89e8e4be0de296fa3d6dd7825ccc44d7dc0f1f3b - # Parent 7fc86ba705e717a721dbc361bf8c9bc05a18ca2f + # Node ID 732aafbecb501a198b3cc9323ad3899ff04ccf95 + # Parent 1d1625283f71954f21d14c3d44d0ad3c019c597f 5 diff --git a/b b/b
--- a/tests/test-issue3084.t Mon Mar 11 15:37:28 2013 -0700 +++ b/tests/test-issue3084.t Tue Mar 19 16:19:20 2013 -0700 @@ -31,6 +31,8 @@ foo has been turned into a largefile use (l)argefile or keep as (n)ormal file? 0 files updated, 0 files merged, 1 files removed, 0 files unresolved (branch merge, don't forget to commit) + getting changed largefiles + 0 largefiles updated, 0 removed $ hg status $ cat foo
--- a/tests/test-largefiles-cache.t Mon Mar 11 15:37:28 2013 -0700 +++ b/tests/test-largefiles-cache.t Tue Mar 19 16:19:20 2013 -0700 @@ -16,6 +16,9 @@ $ echo large > large $ hg add --large large $ hg commit -m 'add largefile' + $ hg rm large + $ hg commit -m 'branchhead without largefile' + $ hg up -qr 0 $ cd .. Discard all cached largefiles in USERCACHE @@ -35,7 +38,7 @@ adding changesets adding manifests adding file changes - added 1 changesets with 1 changes to 1 files + added 2 changesets with 1 changes to 1 files (run 'hg update' to get a working copy) caching new largefiles 0 largefiles cached @@ -44,7 +47,7 @@ but there is no cache file for it. So, hg must treat it as "missing"(!) file. - $ hg update + $ hg update -r0 getting changed largefiles error getting id 7f7097b041ccf68cc5561e9600da4655d21c6d18 from url file:$TESTTMP/mirror for file large: can't get file locally (glob) 0 largefiles updated, 0 removed @@ -61,7 +64,7 @@ Update working directory to tip, again. - $ hg update + $ hg update -r0 getting changed largefiles error getting id 7f7097b041ccf68cc5561e9600da4655d21c6d18 from url file:$TESTTMP/mirror for file large: can't get file locally (glob) 0 largefiles updated, 0 removed @@ -70,6 +73,19 @@ ! large $ cd .. +Verify that largefiles from pulled branchheads are fetched, also to an empty repo + + $ hg init mirror2 + $ hg -R mirror2 pull src -r0 + pulling from src + adding changesets + adding manifests + adding file changes + added 1 changesets with 1 changes to 1 files + (run 'hg update' to get a working copy) + caching new largefiles + 1 largefiles cached + #if unix-permissions Portable way to print file permissions: @@ -90,6 +106,7 @@ $ chmod 660 large $ echo change >> large $ hg commit -m change + created new head $ ../ls-l.py .hg/largefiles/e151b474069de4ca6898f67ce2f2a7263adf8fea 640
--- a/tests/test-largefiles.t Mon Mar 11 15:37:28 2013 -0700 +++ b/tests/test-largefiles.t Tue Mar 19 16:19:20 2013 -0700 @@ -919,8 +919,12 @@ $ cd d More rebase testing, but also test that the largefiles are downloaded from -'default' instead of 'default-push' when no source is specified (issue3584). -The error messages go away if repo 'b' is created with --all-largefiles. +'default-push' when no source is specified (issue3584). (The largefile from the +pulled revision is however not downloaded but found in the local cache.) +Largefiles are fetched for the new pulled revision, not for existing revisions, +rebased or not. + + $ [ ! -f .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 ] $ hg pull --rebase --all-largefiles --config paths.default-push=bogus/path --config paths.default=../b pulling from $TESTTMP/b (glob) searching for changes @@ -932,18 +936,9 @@ M sub/normal4 M sub2/large6 saved backup bundle to $TESTTMP/d/.hg/strip-backup/f574fb32bb45-backup.hg (glob) - error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file large3: can't get file locally (glob) - error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large4: can't get file locally (glob) - error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file large1: can't get file locally (glob) - error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob) - error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob) - error getting id 5f78770c0e77ba4287ad6ef3071c9bf9c379742f from url file:$TESTTMP/b for file large1: can't get file locally (glob) - error getting id eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob) - error getting id 4669e532d5b2c093a78eca010077e708a071bb64 from url file:$TESTTMP/b for file large1: can't get file locally (glob) - error getting id 1deebade43c8c498a3c8daddac0244dc55d1331d from url file:$TESTTMP/b for file sub/large2: can't get file locally (glob) 0 additional largefiles cached - 9 largefiles failed to download nothing to rebase + $ [ -f .hg/largefiles/e166e74c7303192238d60af5a9c4ce9bef0b7928 ] $ hg log --template '{rev}:{node|short} {desc|firstline}\n' 9:598410d3eb9a modify normal file largefile in repo d 8:a381d2c8c80e modify normal file and largefile in repo b @@ -1255,11 +1250,82 @@ ($TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4: (glob) expected hash eb7338044dc27f9bc59b8dd5a246b065ead7a9c4, but got cfef678f24d3e339944138ecdd8fd85ca21d820f) + changeset 5:9d5af5072dbd: large3 missing + (looked for hash baaf12afde9d8d67f25dab6dced0d2bf77dba47c) + changeset 5:9d5af5072dbd: sub/large4 missing + (looked for hash aeb2210d19f02886dde00dac279729a48471e2f9) + changeset 6:4355d653f84f: large3 missing + (looked for hash 7838695e10da2bb75ac1156565f40a2595fa2fa0) verified contents of 15 revisions of 6 largefiles [1] - cleanup $ rm $TESTTMP/d/.hg/largefiles/eb7338044dc27f9bc59b8dd5a246b065ead7a9c4 + $ rm -f .hglf/sub/*.orig + +Update to revision with missing largefile - and make sure it really is missing + + $ rm ${USERCACHE}/7838695e10da2bb75ac1156565f40a2595fa2fa0 + $ hg up -r 6 + getting changed largefiles + error getting id 7838695e10da2bb75ac1156565f40a2595fa2fa0 from url file:$TESTTMP/d for file large3: can't get file locally (glob) + 1 largefiles updated, 2 removed + 4 files updated, 0 files merged, 2 files removed, 0 files unresolved + $ rm normal3 + $ echo >> sub/normal4 + $ hg ci -m 'commit with missing files' + Invoking status precommit hook + M sub/normal4 + ! large3 + ! normal3 + created new head + $ hg st + ! large3 + ! normal3 + $ hg up -r. + 0 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg st + ! large3 + ! normal3 + $ hg up -Cr. + getting changed largefiles + error getting id 7838695e10da2bb75ac1156565f40a2595fa2fa0 from url file:$TESTTMP/d for file large3: can't get file locally (glob) + 0 largefiles updated, 0 removed + 1 files updated, 0 files merged, 0 files removed, 0 files unresolved + $ hg st + ! large3 + $ hg rollback + repository tip rolled back to revision 9 (undo commit) + working directory now based on revision 6 + +Merge with revision with missing largefile - and make sure it tries to fetch it. + + $ hg up -Cqr null + $ echo f > f + $ hg ci -Am branch + adding f + Invoking status precommit hook + A f + created new head + $ hg merge -r 6 + 4 files updated, 0 files merged, 0 files removed, 0 files unresolved + (branch merge, don't forget to commit) + getting changed largefiles + error getting id 7838695e10da2bb75ac1156565f40a2595fa2fa0 from url file:$TESTTMP/d for file large3: can't get file locally (glob) + 1 largefiles updated, 0 removed + + $ hg rollback -q + $ hg up -Cq + +Pulling 0 revisions with --all-largefiles should not fetch for all revisions + + $ hg pull --all-largefiles + pulling from $TESTTMP/d (glob) + searching for changes + no changes found + caching new largefiles + 0 largefiles cached + 0 additional largefiles cached Merging does not revert to old versions of largefiles and also check that merging after having pulled from a non-default remote works
--- a/tests/test-obsolete.t Mon Mar 11 15:37:28 2013 -0700 +++ b/tests/test-obsolete.t Tue Mar 19 16:19:20 2013 -0700 @@ -816,7 +816,7 @@ summary: A $ hg incoming - comparing with $TESTTMP/tmpe/repo-issue3805 + comparing with $TESTTMP/tmpe/repo-issue3805 (glob) searching for changes changeset: 2:3816541e5485 tag: tip @@ -826,7 +826,7 @@ summary: A $ hg incoming --bundle ../issue3805.hg - comparing with $TESTTMP/tmpe/repo-issue3805 + comparing with $TESTTMP/tmpe/repo-issue3805 (glob) searching for changes changeset: 2:3816541e5485 tag: tip @@ -836,7 +836,7 @@ summary: A $ hg outgoing - comparing with $TESTTMP/tmpe/repo-issue3805 + comparing with $TESTTMP/tmpe/repo-issue3805 (glob) searching for changes no changes found [1]
--- a/tests/test-rebase-rename.t Mon Mar 11 15:37:28 2013 -0700 +++ b/tests/test-rebase-rename.t Tue Mar 19 16:19:20 2013 -0700 @@ -12,20 +12,24 @@ $ hg init a $ cd a + $ mkdir d $ echo a > a $ hg ci -Am A adding a - $ echo b > b + $ echo b > d/b $ hg ci -Am B - adding b + adding d/b - $ hg mv b b-renamed + $ hg mv d d-renamed + moving d/b to d-renamed/b $ hg ci -m 'rename B' $ hg up -q -C 1 $ hg mv a a-renamed + $ echo x > d/x + $ hg add d/x $ hg ci -m 'rename A' created new head @@ -47,6 +51,12 @@ diff --git a/a b/a-renamed rename from a rename to a-renamed + diff --git a/d/x b/d/x + new file mode 100644 + --- /dev/null + +++ b/d/x + @@ -0,0 +1,1 @@ + +x Rebase the revision containing the rename: @@ -70,23 +80,29 @@ diff --git a/a b/a-renamed rename from a rename to a-renamed + diff --git a/d-renamed/x b/d-renamed/x + new file mode 100644 + --- /dev/null + +++ b/d-renamed/x + @@ -0,0 +1,1 @@ + +x Rebased revision does not contain information about b (issue3739) $ hg log -r 3 --debug - changeset: 3:3b905b1064f14ace3ad02353b79dd42d32981655 + changeset: 3:032a9b75e83bff1dcfb6cbfa4ef50a704bf1b569 tag: tip phase: draft - parent: 2:920a371a5635af23a26a011ca346cecd1cfcb942 + parent: 2:220d0626d185f372d9d8f69d9c73b0811d7725f7 parent: -1:0000000000000000000000000000000000000000 - manifest: 3:c4a62b2b64593c8fe0523d4c1ba2e243a8bd4dce + manifest: 3:035d66b27a1b06b2d12b46d41a39adb7a200c370 user: test date: Thu Jan 01 00:00:00 1970 +0000 - files+: a-renamed + files+: a-renamed d-renamed/x files-: a extra: branch=default - extra: rebase_source=89af05cb38a281f891c6f5581dd027092da29166 + extra: rebase_source=73a3ee40125d6f0f347082e5831ceccb3f005f8a description: rename A