Laurent Charignon <lcharignon@fb.com> [Wed, 18 Nov 2015 01:36:58 -0800] rev 26998
localrepo: put bookmark move following commit in one transaction
Before this patch, making a commit on a local repo could move a bookmark and
both operations would not be grouped as one transaction. This patch makes both
operations part of one transaction. This is necessary to switch to the new api
to save bookmarks repo._bookmarks.recordchange if we don't want to change the
current behavior of rollback.
Dirstate change happening after the commit is done is now part of the
transaction mentioned above. This leads to a change in the expected output of
several tests.
The change to test-fncache happens because both lock are now released in the
same finally clause. The lock release is made explicitly buggy in this test.
Previously releasing lock would crash triggering release of wlock that crashes
too. Now lock release crash does not directly result in the release of wlock.
Instead wlock is released at garbage collection time and the error raised at
that time "confuses" python.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 15:43:21 -0800] rev 26997
test-resolve.t: switch to mergestate.read()
See previous patches for why we're doing this.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:58:50 -0800] rev 26996
localrepo.commit: switch to mergestate.read()
See previous patches for why we're doing this.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:57:38 -0800] rev 26995
fileset: switch to mergestate.read()
See previous patches for why we're doing this.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 14:20:55 -0800] rev 26994
commands.summary: switch to mergestate.read()
See previous patch for why we're doing this.
We do this with a bit of care -- it would be bad form for 'hg summary' to abort
completely if we encounter an unsupported merge record. Instead just warn about
that and continue with the rest of the summary.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:56:46 -0800] rev 26993
commands.resolve: switch to mergestate.read()
See previous patches for why we're doing this.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:56:10 -0800] rev 26992
shelve: switch to mergestate.read()
See previous patches for why we're doing this.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 13:55:30 -0800] rev 26991
mergestate: add a constructor that reads state from disk
At the moment it's the same as just creating a new mergestate, but we'll soon
move the _read call out of __init__ and in here.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 17:04:53 -0800] rev 26990
merge.applyupdates: switch to mergestate.clean()
See the previous patches for why we're doing this.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 17:04:32 -0800] rev 26989
localrepo: switch to mergestate.clean()
See the previous patches for why we're doing this.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 17:02:35 -0800] rev 26988
strip: switch to mergestate.clean()
See the previous patches for why we're doing this.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 17:00:54 -0800] rev 26987
mergestate: add a constructor that sets up a clean merge state
Eventually, we'll move the read call out of the constructor. This will:
- avoid unnecessary reads when we're going to nuke the merge state anyway
- avoid raising an exception if there's an unsupported merge record
'clean' seems like a good name for it because I wanted to avoid anything with
the word 'new' in it, and 'reset' is more an action performed on a merge state
than a way to get a new merge state.
Thanks to Martin von Zweigbergk for feedback about naming this.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 14:11:52 -0800] rev 26986
mergestate: raise structured exception for unsupported merge records
We're going to catch this exception in 'hg summary' to print a better error
message.
This code is pretty untested, so there are no changes to test output. In
upcoming patches we're going to test the output more thoroughly.
Siddharth Agarwal <sid0@fb.com> [Tue, 17 Nov 2015 14:10:12 -0800] rev 26985
error: add a structured exception for unsupported merge records
We're going to use this in summary to print a better error message.
Bryan O'Sullivan <bos@serpentine.com> [Tue, 17 Nov 2015 13:47:16 -0800] rev 26984
dirstate: back out
502b56a9e897
Superseded by the parent of this commit.
Bryan O'Sullivan <bos@serpentine.com> [Tue, 17 Nov 2015 13:47:14 -0800] rev 26983
osutil: make statfiles check for interrupts periodically
This is a simpler and faster fix for
issue4878 than the contortions
performed in
502b56a9e897.
Bryan O'Sullivan <bos@serpentine.com> [Tue, 17 Nov 2015 13:43:09 -0800] rev 26982
osutil: don't leak on statfiles error
Found using the power of the mighty eyeball.
liscju <piotr.listkiewicz@gmail.com> [Thu, 12 Nov 2015 12:44:15 +0100] rev 26981
histedit: extracts _isdirtywc function
Checking if working copy is dirty was done in few places, this
patch extracts it in _isdirtywc procedure.
Siddharth Agarwal <sid0@fb.com> [Mon, 16 Nov 2015 11:23:32 -0800] rev 26980
node: add 'nullhex', hex-encoded nullid
We're going to need this for upcoming changes, because the merge state stores
nodes as hex strings.
Siddharth Agarwal <sid0@fb.com> [Mon, 16 Nov 2015 11:45:35 -0800] rev 26979
filemerge: introduce class whose objects represent files not in a context
Most code is going to barf at the return values here (particularly from data
and size), so we restrict it to the filemerge code.
This is already somewhat supported via:
ctx.filectx(f, fileid=nullid)
Indeed, for add/add conflicts (ancestor doesn't have the file) we use precisely
that. However, that is broken in subtle ways:
- The cmp() function in filectx returns False (identical) for such a filectx
when compared to a zero-length file.
- size() returns 0 rather than some sort of value indicating that the file isn't
present.
- data() returns '' rather than some sort of value indicating that the file isn't
present.
Given the relatively niche use of such filectxes, this seems to be the simplest
way to fix all these issues.
Siddharth Agarwal <sid0@fb.com> [Mon, 16 Nov 2015 11:27:27 -0800] rev 26978
filectx: add isabsent method
This will indicate whether this filectx represents a file that is *not* in a
changectx. This will be used by merge and filemerge code to know about when a
conflict is a change/delete conflict.
While this is kind of hacky, it is the least bad of all the alternatives. Other
options considered but rejected include:
- isinstance(fctx, ...) -- not very Pythonic, doesn't support duck typing
- fctx.size() is None -- the 'size()' call on workingfilectxes causes a disk stat
- fctx.filenode() == nullid -- the semantics around filenode are incredibly
confusing. In particular, for workingfilectxes, filenode() is always None no
matter whether the file is present on disk or in either parent. Having different
behavior for None versus nullid in the merge code is just asking for pain.
Thanks to Pierre-Yves David for early review feedback here.
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 22:37:51 -0800] rev 26977
filectx: allow custom comparators
We're going to introduce other sorts of filectxes very soon, and we'd like the
cmp method to function properly (i.e. commutatively) for them. The only way to
make that happen is for this cmp method to call into that specialized one if
that defines a custom comparator.
Siddharth Agarwal <sid0@fb.com> [Fri, 13 Nov 2015 23:01:36 -0800] rev 26976
debugmergestate: print out record type for files
We're going to add a separate record type for change/delete conflicts soon. We
need to make sure they get stored with the correct record type so that older
versions of Mercurial correctly abort when they see change/delete records.
Siddharth Agarwal <sid0@fb.com> [Sun, 15 Nov 2015 22:45:20 -0800] rev 26975
merge.applyupdates: don't return early if merge driver's conclude failed
Somewhat silly oversight -- this prevented the progress bar from being reset.
Laurent Charignon <lcharignon@fb.com> [Mon, 16 Nov 2015 17:15:36 -0800] rev 26974
convert: use repo._bookmarks.recordchange instead of repo._bookmarks.write
Before this patch, convert was using repo._bookmarks.write, a deprecated API
for saving bookmarks.
This patch changes the use of repo._bookmarks.write to
repo._bookmarks.recordchange.
Laurent Charignon <lcharignon@fb.com> [Mon, 16 Nov 2015 17:14:15 -0800] rev 26973
convert: indentation change to make the next patch more legible
We put the code to be indented in the next patch in a "if True:" block to make
it easier to review.
Shubhanshu Agrawal <agrawal.shubhanshu@gmail.com> [Sun, 15 Nov 2015 20:27:27 +0530] rev 26972
strip: renaming local variables
Renaming local variables to be more precise, i want to store
a different list of bookmarks and it would be hard to
understand what marks represents in that change therefore
renaming it to repomarks. Renamed bookmarks(module)
to bookmarksmod as to free up bookmarks which will be
used when pluralizing bookmark.
Martin von Zweigbergk <martinvonz@google.com> [Wed, 11 Feb 2015 22:22:29 -0800] rev 26971
test-rename-merge2: make selected output less arbitrary
It's unclear why everything from the first 'updating:' line should be
ignored. The arbitrariness makes it confusing that changing the code
so e.g. the 'getting 8/f' line is printed later makes it disappear
completely from the ouput. The list of 'preserving x for resolve of y'
seems convered by the subsequent for loop in the test case. Perhaps
it's only copies that are of interests, so let's keep only that part.