Sat, 16 Aug 2014 17:59:26 +0900 annotate: abort early if no file is specified
Yuya Nishihara <yuya@tcha.org> [Sat, 16 Aug 2014 17:59:26 +0900] rev 22266
annotate: abort early if no file is specified This change is intended to move the getdate function near the opmap table.
Wed, 20 Aug 2014 15:07:25 -0700 purge: avoid full walks when directories aren't purged
Siddharth Agarwal <sid0@fb.com> [Wed, 20 Aug 2014 15:07:25 -0700] rev 22265
purge: avoid full walks when directories aren't purged If match.traversedir is not None, we're forced to do full walks. However when we aren't purging directories we don't need to set match.traversedir to anything. This speeds up non-full walks such as the one hgwatchman makes possible. For mozilla-central with hgwatchman enabled, 'hg purge --files' goes from 0.88 seconds to 0.22.
Thu, 21 Aug 2014 16:05:29 -0700 clone: for local clones, copy over filtered branchcaches as well (issue4286)
Siddharth Agarwal <sid0@fb.com> [Thu, 21 Aug 2014 16:05:29 -0700] rev 22264
clone: for local clones, copy over filtered branchcaches as well (issue4286) Local clones copy/hardlink over files directly, so the branchcaches should all be valid. There's a slight chance that a read operation would update one of the branchcaches, but we hold a lock over the source repo so they shouldn't cause an invalid branchcache to be copied over, just a different, valid one.
Thu, 21 Aug 2014 15:58:32 -0700 clone: for local clones, copy branchcache from the right location (issue4286)
Siddharth Agarwal <sid0@fb.com> [Thu, 21 Aug 2014 15:58:32 -0700] rev 22263
clone: for local clones, copy branchcache from the right location (issue4286) The unfiltered branchcache is in .hg/cache/branch2, not .hg/store/cache/branch2.
Wed, 20 Aug 2014 14:33:59 -0400 obsolete: avoid 2-argument form of enumerate, which was new in Python 2.6
Augie Fackler <raf@durin42.com> [Wed, 20 Aug 2014 14:33:59 -0400] rev 22262
obsolete: avoid 2-argument form of enumerate, which was new in Python 2.6
Wed, 20 Aug 2014 13:21:41 -0400 repoview: use util.sha1() instead of hashlib.sha1()
Augie Fackler <raf@durin42.com> [Wed, 20 Aug 2014 13:21:41 -0400] rev 22261
repoview: use util.sha1() instead of hashlib.sha1() 45b5cd948a4d accidentally broke Python 2.4 compatibility, this fixes it.
Mon, 18 Aug 2014 17:17:23 -0700 debugobsolete: display parents information from markers
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 17:17:23 -0700] rev 22260
debugobsolete: display parents information from markers Now that we have a new field, we need a way to visualize it.
Mon, 18 Aug 2014 17:14:27 -0700 obsmarkers: add a `parentnodes` method to retrieve parent information
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 17:14:27 -0700] rev 22259
obsmarkers: add a `parentnodes` method to retrieve parent information
Mon, 18 Aug 2014 16:28:44 -0700 obsstore: also store the 'parents' field on disk
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 16:28:44 -0700] rev 22258
obsstore: also store the 'parents' field on disk We now store the `parents` field on disk. We use the same strategy as for `date`: We stick it into the metadata. This is slow and dirty, but this is also the only way we currently have. At some point we'll have a new obsstore format to store this properly.
Mon, 18 Aug 2014 17:06:08 -0700 obsstore: drop 'date' from the metadata dictionary
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 17:06:08 -0700] rev 22257
obsstore: drop 'date' from the metadata dictionary We are extracting the `date` information from the metadata at read time. However, we failed to remove it from the metadata returned in the markers. This is now fixed.
Mon, 18 Aug 2014 16:17:16 -0700 createmarkers: automatically record the parent of pruned changesets
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 16:17:16 -0700] rev 22256
createmarkers: automatically record the parent of pruned changesets We need this information to build the set of relevant markers during exchanges. This can only be done at the `createmarkers` level since the `obsstore.create` function does not have a repo and therefore has no access to the parent information.
Mon, 18 Aug 2014 16:12:29 -0700 obsstore: add a `parents` argument to obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 16:12:29 -0700] rev 22255
obsstore: add a `parents` argument to obsstore.create We need a way to pass the information to the function. Some guru told me that what's arguments are made for.
Mon, 18 Aug 2014 16:08:44 -0700 obsstore: add a `parents` field
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 18 Aug 2014 16:08:44 -0700] rev 22254
obsstore: add a `parents` field This field is intended to store the parent of the precursor. This is useful to attach pruned changesets to a set of exchanged changesets. We currently just add the fields with a None value. None stands for "no data recorded".
Tue, 19 Aug 2014 14:42:08 -0700 obsstore: add some documentation about the marker fields
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 19 Aug 2014 14:42:08 -0700] rev 22253
obsstore: add some documentation about the marker fields As the number of fields grow, it makes sense to start documenting their contents.
Sat, 16 Aug 2014 10:43:59 +0900 transplant: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22252
transplant: change "editform" to distinguish merge commits from others "editform" argument for "getcommiteditor" is decided according to the format below: EXTENSION[.COMMAND][.ROUTE] - EXTENSION: name of extension - COMMAND: name of command, if there are two or more commands in EXTENSION - ROUTE: name of route, if there are two or more routes in COMMAND This patch newly adds "normal" and "merge" as ROUTE, to distinguish merge commits from other. This patch adds 4 test patterns to test combination of "merge"(x2) and "--continue"(x2).
Sat, 16 Aug 2014 10:43:59 +0900 rebase: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22251
rebase: change "editform" to distinguish merge commits from others "editform" argument for "getcommiteditor" is decided according to the format below: EXTENSION[.COMMAND][.ROUTE] - EXTENSION: name of extension - COMMAND: name of command, if there are two or more commands in EXTENSION - ROUTE: name of route, if there are two or more routes in COMMAND This patch newly adds "merge" as ROUTE, to distinguish merge commits from other. This patch passes bool as "ctxorbool" to "mergeeditform", because working context has always 2 parents at this point. Dropping the second parent of non-merging commits is executed in "concludenode". Unlike other patches in this series (e.g. for "hg commit"), this patch doesn't add "normal.normal"/"normal.merge" style ROUTEs, because there is no "merge" case in "collapse" ROUTE.
Sat, 16 Aug 2014 10:43:59 +0900 import: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22250
import: change "editform" to distinguish merge commits from others "editform" argument for "getcommiteditor" is decided according to the format below: COMMAND[.ROUTE] - COMMAND: name of command - ROUTE: name of route, if there are two or more routes in COMMAND This patch uses "normal.normal" and "normal.merge" as ROUTE of "editform" instead of "normal", to distinguish merge commits from other in "hg import" without "--bypass" case. This patch assumes "editform" variations for "hg import" below: import.normal.normal import.normal.merge import.bypass.normal import.bypass.merge Unlike other patches in this series, this patch uses "editor.sh" instead of "checkeditform.sh" for the name of the script to check "HGEDITFORM", because it has to do more than checking "HGEDITFORM". To invoke editor forcibly in "test-import-merge.t", this patch creates the patch not having patch description as "merge.nomsg.diff".
Sat, 16 Aug 2014 10:43:59 +0900 commit: change "editform" to distinguish merge commits from other (--amend)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22249
commit: change "editform" to distinguish merge commits from other (--amend) "editform" argument for "getcommiteditor" is decided according to the format below: COMMAND[.ROUTE] - COMMAND: name of command - ROUTE: name of route, if there are two or more routes in COMMAND This patch uses "amend.normal" and "amend.merge" as ROUTE of "editform" instead of "amend", to distinguish merge commits from other in "hg commit --amend" case.
Sat, 16 Aug 2014 10:43:59 +0900 commit: change "editform" to distinguish merge commits from others
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Sat, 16 Aug 2014 10:43:59 +0900] rev 22248
commit: change "editform" to distinguish merge commits from others "editform" argument for "getcommiteditor" is decided according to the format below: COMMAND[.ROUTE] - COMMAND: name of command - ROUTE: name of route, if there are two or more routes in COMMAND This patch uses "normal.normal" and "normal.merge" as ROUTE of "editform" instead of "normal", to distinguish merge commits from others in "hg commit" without "--amend" case. This patch assumes "editform" variations for "hg commit" below: commit.normal.normal commit.normal.merge commit.amend.normal commit.amend.merge "mergeeditform" is factored out for subsequent patches. It takes "ctxorbool" argument, because context object can't be passed in some cases.
Sat, 16 Aug 2014 10:19:26 -0700 test-ssh: verify that stderr from remote is printed (issue4336)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 16 Aug 2014 10:19:26 -0700] rev 22247
test-ssh: verify that stderr from remote is printed (issue4336) The issue fixed in the previous patch was uncovered by implementing an extension that printed additional output locally before the push command completed. This test emulates that. If this change is applied before the previous patch, the test will fail on Linux, with the local output being printed before the "remote: " lines.
Sat, 16 Aug 2014 10:28:59 -0700 posix: implement readpipe using non-blocking I/O (issue4336)
Gregory Szorc <gregory.szorc@gmail.com> [Sat, 16 Aug 2014 10:28:59 -0700] rev 22246
posix: implement readpipe using non-blocking I/O (issue4336) On Linux, fstat().st_size of a pipe always returns 0, even if the pipe has data available for reading. This meant that reading from and subsequently printing the stderr pipe content after wireproto commands over SSH meant that available data wasn't being printed. We now implement pipe reading on POSIX by doing a non-blocking read for all available data.
Fri, 15 Aug 2014 20:02:18 -0700 platform: implement readpipe()
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 15 Aug 2014 20:02:18 -0700] rev 22245
platform: implement readpipe() Reading all available data from a pipe has a platform-dependent implementation. This patch establishes platform.readpipe() by copying the inline implementation in sshpeer.readerr(). The implementations for POSIX and Windows are currently identical. The POSIX implementation will be changed in a subsequent patch.
Fri, 15 Aug 2014 19:18:21 -0700 exchange: remove duplicated addition to pushop.stepdone
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 19:18:21 -0700] rev 22244
exchange: remove duplicated addition to pushop.stepdone Not sure how it got there but it is useless.
Mon, 18 Aug 2014 20:23:37 -0400 exchange: drop superfluous parens
Augie Fackler <raf@durin42.com> [Mon, 18 Aug 2014 20:23:37 -0400] rev 22243
exchange: drop superfluous parens
Fri, 15 Aug 2014 19:03:42 -0700 push: add bookmarks to the unified bundle2 push
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 19:03:42 -0700] rev 22242
push: add bookmarks to the unified bundle2 push We use the `pushkey` part to exchange bookmark updates within the unified bundle2 push. Note that this only applies on update (moving a bookmark known on both sides) since bookmark export (creation of a new bookmark on remote) is apparently done outside of the _push function.
Fri, 15 Aug 2014 19:03:33 -0700 test-bundle2: add bookmark movement to the push test
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 19:03:33 -0700] rev 22241
test-bundle2: add bookmark movement to the push test If we add bookmarks to bundle2, we need a way to test the new code. Tests are changed beforehand to highlight that inclusion of bookmarks in bundle does not introduce any behavior changes.
Fri, 15 Aug 2014 18:40:57 -0700 push: use stepsdone to control bookmark push
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 18:40:57 -0700] rev 22240
push: use stepsdone to control bookmark push If bookmark are to be integrated in the unified bundle2, we need a way to disable the old-style push.
Fri, 15 Aug 2014 18:39:39 -0700 push: move bookmark discovery with other discovery steps
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 18:39:39 -0700] rev 22239
push: move bookmark discovery with other discovery steps The discovery of necessary bookmark updates is now done within the "discovery phase". This opens the door to the inclusion of bookmarks in a unified bundle2 push.
Fri, 15 Aug 2014 18:02:54 -0700 pushbookmark: split an ultra-long line into a saner version
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 18:02:54 -0700] rev 22238
pushbookmark: split an ultra-long line into a saner version We make a temporary variable for the remote bookmark data and we do not expand all elements from `bookmark.compare` since we are going to use only one.
Wed, 25 Jun 2014 00:02:17 +0100 revert: drop dead code for untracked files
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 00:02:17 +0100] rev 22237
revert: drop dead code for untracked files Untracked files are handled through status now.
Wed, 25 Jun 2014 00:01:30 +0100 revert: handle unknown files through status
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 00:01:30 +0100] rev 22236
revert: handle unknown files through status This will allow us to drop the code dedicated to this special case.
Tue, 24 Jun 2014 23:55:43 +0100 revert: drop more dead code
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 23:55:43 +0100] rev 22235
revert: drop more dead code Now that we detect all clean files, we do not need this clause anymore.
Sat, 02 Aug 2014 13:07:01 -0700 revert: add a message to noop action
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 02 Aug 2014 13:07:01 -0700] rev 22234
revert: add a message to noop action This prepares for the arrival of a second "not touching file" action: revert of an untracked file.
Fri, 01 Aug 2014 11:41:56 -0700 revert: simplify loop conditional
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 01 Aug 2014 11:41:56 -0700] rev 22233
revert: simplify loop conditional The two breaks can be joined into one. The code gains one level of indent.
Tue, 24 Jun 2014 18:04:13 +0100 revert: explode the action tuple in the for loop
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 18:04:13 +0100] rev 22232
revert: explode the action tuple in the for loop noop is about to gain a message.
Sat, 02 Aug 2014 12:45:34 -0700 revert: use actions[...] in all disptable cases
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 02 Aug 2014 12:45:34 -0700] rev 22231
revert: use actions[...] in all disptable cases 1. Special cases are not special enough 2. There are two cases where nothing is done and a message is displayed. This prepares it.
Tue, 24 Jun 2014 17:54:33 +0100 revset: factorize backup decision
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 17:54:33 +0100] rev 22230
revset: factorize backup decision The conditional controlling the creation of backup is fairly big. We move config related decisions outside of the loop.
Tue, 24 Jun 2014 17:44:31 +0100 revert: use a flat dispatch table
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 17:44:31 +0100] rev 22229
revert: use a flat dispatch table Now that the table is simpler, remove one level of depth from it. This simplifies its usage in the for loop.
Fri, 15 Aug 2014 18:26:21 -0700 pushbookmark: do not attempt to update bookmarks if the push failed (BC)
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 18:26:21 -0700] rev 22228
pushbookmark: do not attempt to update bookmarks if the push failed (BC) Before this patch, there was always an attempt to update bookmark even if prior steps of the push failed. I cannot see a good semantic reason to do so. We disable this possibility to simplify the push flow with bundle2. Bookmarks will be included in the bundle and fail with other steps.
Fri, 15 Aug 2014 17:58:15 -0700 pushbookmark: remove a <cond> and <val> or <other> construct
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 17:58:15 -0700] rev 22227
pushbookmark: remove a <cond> and <val> or <other> construct We make the conditional explicit for the sake of readability.
Fri, 15 Aug 2014 16:31:06 -0700 pushbookmark: stop unrolling ancestors
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 16:31:06 -0700] rev 22226
pushbookmark: stop unrolling ancestors Now that ancestors has the same boolean property as a list, we can stop unrolling the set of ancestors. This should provide a significant speedup to this step as ancestor objects are smart and lazy.
Fri, 15 Aug 2014 15:57:50 -0700 ancestors: add a __nonzero__ method
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 15:57:50 -0700] rev 22225
ancestors: add a __nonzero__ method This allows using the object in a conditional the same way we can use list.
Fri, 15 Aug 2014 15:25:12 -0700 push: update bookmarks within the remote lock
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 15:25:12 -0700] rev 22224
push: update bookmarks within the remote lock Updating bookmarks is part of the push. It should be done within the same lock as the other steps of the push.
Mon, 18 Aug 2014 12:12:57 -0700 hgweb: refresh repository using URL not path (issue4323)
Gregory Szorc <gregory.szorc@gmail.com> [Mon, 18 Aug 2014 12:12:57 -0700] rev 22223
hgweb: refresh repository using URL not path (issue4323) hgweb detects out-of-date repository instances (using a highly suspect mechanism that should probably be fixed) and obtains a new repository object if needed. This patch changes the repository object copy to use the repo URL (instead of path). This preserves more information about the source repository and allows bundles to be served through hgweb. A test verifying that bundles can now be served properly via `hg serve` has been added.
Tue, 19 Aug 2014 10:01:06 -0700 obsmarker: add `date` as an explicit field
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 19 Aug 2014 10:01:06 -0700] rev 22222
obsmarker: add `date` as an explicit field The markers are now 5-item tuples (concluded by the date). The obsstore.fields contents have been updated accordingly. There is no change to the on-disk format yet, so the date has to be extracted every time we read binary markers and re-injected each team we write them. This introduces a slowdown that will be solved when a new version of the format is added. Such a slowdown was already introduced by the evolve extension anyway.
Tue, 12 Aug 2014 01:49:38 -0700 obsstore: add fields attribute to track each field in a marker
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 12 Aug 2014 01:49:38 -0700] rev 22221
obsstore: add fields attribute to track each field in a marker We are going to increase the amount of data explicitly stored in obsolescence markers. This mean we are going to have a longer tuple and some values will be shuffled around. So we add a ``fields`` attribute to the obsstore class to keep track of what entry is what. This will be useful for extensions and for documentation purpose.
Wed, 13 Aug 2014 23:42:36 -0700 debugobsolete: explicitly display date in the output
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 13 Aug 2014 23:42:36 -0700] rev 22220
debugobsolete: explicitly display date in the output As the date is becoming a first-class citizen, we are displaying it in an explicit field. As a bonus it is now readable by humans.
Thu, 14 Aug 2014 12:59:48 -0700 obsolete: add a date argument to the `createmarkers` function
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 14 Aug 2014 12:59:48 -0700] rev 22219
obsolete: add a date argument to the `createmarkers` function The function is now just passing the value to create markers.
Wed, 13 Aug 2014 23:25:07 -0700 debugobsolete: use the new date argument on obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 13 Aug 2014 23:25:07 -0700] rev 22218
debugobsolete: use the new date argument on obsstore.create Now that we have this new argument, we can just use it.
Wed, 13 Aug 2014 22:44:47 -0700 obsstore: add an explicit `date` argument to obsstore.create
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 13 Aug 2014 22:44:47 -0700] rev 22217
obsstore: add an explicit `date` argument to obsstore.create The date will become an official field in the markers (and ultimately in the on-disk format). We start by making it an official argument for the function.
Thu, 14 Aug 2014 01:53:07 -0700 obsolete: explicitly pass metadata argument using keyword argument
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 14 Aug 2014 01:53:07 -0700] rev 22216
obsolete: explicitly pass metadata argument using keyword argument We are about to add more arguments to this function (date, parents, etc). Passing metadata as a keyword argument gives us more flexibility when adding them.
Fri, 15 Aug 2014 09:41:30 -0700 obsmarker: add a `flags` method
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 09:41:30 -0700] rev 22215
obsmarker: add a `flags` method We introduce a proper method to access the flag information.
Fri, 15 Aug 2014 14:19:15 -0700 test-treediscovery: update output after merge
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 15 Aug 2014 14:19:15 -0700] rev 22214
test-treediscovery: update output after merge Recent change in the push process introduced an extra listing of the phase name space before the push (on default). Meanwhile on default, a fix introduced a new test with debug output. We update the test output to be correct.
Tue, 24 Jun 2014 16:59:40 +0100 revert: add an XXX about rename tracking
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 16:59:40 +0100] rev 22213
revert: add an XXX about rename tracking We check for rename information in the dirstate. This is probably not enough to preserve this behavior when using an explicit target rev. I just spotted this while working on this code, but this is outside the scope of my series so I'm just adding a comment to highlight this suspicious situation.
Tue, 24 Jun 2014 17:39:43 +0100 revert: inline a now useless closure
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 17:39:43 +0100] rev 22212
revert: inline a now useless closure Now that a single call site remains, we can just inline its content.
Tue, 24 Jun 2014 17:37:24 +0100 revert: remove code killed by the double status
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 17:37:24 +0100] rev 22211
revert: remove code killed by the double status All those checks were here to catch cases where files were not modified in dirstate but were different in the target revision. This is now properly handled by calling status on the target node too.
Tue, 24 Jun 2014 17:36:49 +0100 revert: drop `missingmodified` set
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 17:36:49 +0100] rev 22210
revert: drop `missingmodified` set There cannot be any elements in this set since: dsmodified &= modified
Tue, 24 Jun 2014 17:28:20 +0100 revert: detect files added during a merge
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 17:28:20 +0100] rev 22209
revert: detect files added during a merge In case of merge, file that are actually added can be reported as modified. This is currently handled by special-case code. We detect it beforehand instead. This will lets use remove the special-case code at some point in the future.
Sat, 02 Aug 2014 11:32:24 -0700 revert: simplify handling of `added` files
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 02 Aug 2014 11:32:24 -0700] rev 22208
revert: simplify handling of `added` files There are multiple possible cases for added files. But it's all handled by magic much lower in the stack. We document them, simplify the codes and move on.
Fri, 15 Aug 2014 11:48:05 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Fri, 15 Aug 2014 11:48:05 -0500] rev 22207
merge with stable
Fri, 15 Aug 2014 23:05:53 +0900 rebase: use "rebase.collapse" as "editform" for "--collapse" always
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 15 Aug 2014 23:05:53 +0900] rev 22206
rebase: use "rebase.collapse" as "editform" for "--collapse" always Before this patch, if both "--message" and "--collapse" are specified for "hg rebase", "rebaes.normal" is used as "editform" unexpectedly. Unlike patches before and after in this series for improvement, this is bug fix patch.
Fri, 15 Aug 2014 23:05:53 +0900 ui: invoke editor for committing with HGEDITFORM environment variable
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 15 Aug 2014 23:05:53 +0900] rev 22205
ui: invoke editor for committing with HGEDITFORM environment variable At the external editor invocation for committing, the value specified as "editform" for "cmdutil.getcommiteditor" is in "HGEDITFORM". This enables external editor to do own customization according to commit types.
Fri, 15 Aug 2014 04:37:46 +0200 cleanup: name unused variables using convention of leading _
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 04:37:46 +0200] rev 22204
cleanup: name unused variables using convention of leading _ This helps checker tools ... and readability for those who knows and follows the convention.
Fri, 15 Aug 2014 16:20:47 +0200 cleanup: rename check-translation.py checker function - don't hide global var
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 16:20:47 +0200] rev 22203
cleanup: rename check-translation.py checker function - don't hide global var
Fri, 15 Aug 2014 04:37:45 +0200 cleanup: remove some unused / duplicate imports
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 04:37:45 +0200] rev 22202
cleanup: remove some unused / duplicate imports
Fri, 15 Aug 2014 04:37:46 +0200 cleanup: fix some list comprehension redefinitions of existing vars
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 04:37:46 +0200] rev 22201
cleanup: fix some list comprehension redefinitions of existing vars In all the remaining cases the comprehension variable is used for the same thing as a previous loop variable. This will mute some pyflakes "list comprehension redefines" warnings.
Fri, 15 Aug 2014 16:20:47 +0200 cleanup: avoid local vars shadowing imports
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 16:20:47 +0200] rev 22200
cleanup: avoid local vars shadowing imports This will mute some pyflakes "import ... shadowed by loop variable" warnings.
Fri, 15 Aug 2014 16:20:47 +0200 cleanup: avoid _ for local unused tmp variables - that is reserved for i18n
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 16:20:47 +0200] rev 22199
cleanup: avoid _ for local unused tmp variables - that is reserved for i18n _ is usually used for i18n markup but we also used it for I-don't-care variables. Instead, name don't-care variables in a slightly descriptive way but use the _ prefix to designate unused variable. This will mute some pyflakes "import '_' ... shadowed by loop variable" warnings.
Fri, 15 Aug 2014 04:37:45 +0200 cleanup: make sure we always access members of imported modules
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 04:37:45 +0200] rev 22198
cleanup: make sure we always access members of imported modules This will make sure we get import errors, even if demandimport is enabled. This will also mute some pyflakes 'imported but unused' warnings.
Fri, 15 Aug 2014 20:28:51 +0900 largefiles: update lfdirstate for unchanged largefiles during linear merging
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 15 Aug 2014 20:28:51 +0900] rev 22197
largefiles: update lfdirstate for unchanged largefiles during linear merging Before this patch, linear merging of modified largefiles causes an unexpected result, if (1) largefile collides with same-name normal one in the target revision and (2) "local" largefile is chosen, even though branch merging between such revisions works correctly. Expected result of such linear merging is marking the largefile as (re-)"added", but the actual result is marking it as "modified". The standin of modified "local largefile" is not changed by linear merging, and updating/merging update lfdirstate entries only for largefiles of which standins are changed. This patch adds the code path to update lfdirstate only for largefiles of which standins are not changed. In this case, "synclfdirstate" should be invoked with True as "normallookup" argument always to force using "normallookup" on dirstate for "n" files, because "normal" may mark target files as "clean" unexpectedly. To reduce cost of "lfile not in filelist", this patch converts "filelist" to a "set" object: "filelist" is used only in (1) the newly added code path and (2) the next line of "filelist = set(filelist)". This is a temporary way to fix with less changes. For fundamental resolution of this kind of problems in the future, "lfdirstate" should be updated with "dirstate" simultaneously during "merge.update" execution: maybe by hooking "recordupdates" (+ total refactoring around lfdirstate handling)
Fri, 15 Aug 2014 20:28:51 +0900 largefiles: keep largefiles from colliding with normal one during linear merge
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 15 Aug 2014 20:28:51 +0900] rev 22196
largefiles: keep largefiles from colliding with normal one during linear merge Before this patch, linear merging of modified or newly added largefile causes unexpected result, if (1) largefile collides with same name normal one in the target revision and (2) "local" largefile is chosen, even though branch merging between such revisions doesn't. Expected result of such linear merging is: (1) (not yet recorded) largefile is kept in the working directory (2) largefile is marked as (re-)"added" (3) colliding normal file is marked as "removed" But actual result is: (1) largefile in the working directory is unlinked (2) largefile is marked as "normal" (so treated as "missing") (3) the dirstate entry for colliding normal file is just dropped (1) is very serious, because there is no way to restore temporarily modified largefiles. (3) prevents the next commit from adding the manifest with correct "removal of (normal) file" information for newly created changeset. The root cause of this problem is putting "lfile" into "actions['r']" in linear-merging case. At liner merging, "actions['r']" causes: - unlinking "target file" in the working directory, but "lfile" as "target file" is also largefile itself in this case - dropping the dirstate entry for target file "actions['f']" (= "forget") does only the latter, and this is reason why this patch doesn't choose putting "lfile" into it instead of "actions['r']". This patch newly introduces action "lfmr" (LargeFiles: Mark as Removed) to mark colliding normal file as "removed" without unlinking it. This patch uses "hg debugdirstate" instead of "hg status" in test, because: - choosing "local largefile" hides "removed" status of "remote normal file" in "hg status" output, and - "hg status" for "large2" in this case has another problem fixed in the subsequent patch
Fri, 15 Aug 2014 20:28:51 +0900 largefiles: add test for large/normal conflict at linear merging
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 15 Aug 2014 20:28:51 +0900] rev 22195
largefiles: add test for large/normal conflict at linear merging Before this patch, there is no explicit test for it: test-issue3084.t seems to test such conflict only at branch merging. This patch uses "[debug] dirstate.delaywrite" feature for the tests expecting "M" status of largefiles, to confirm certainly whether files are marked unexpectedly as "clean".
Fri, 15 Aug 2014 20:28:51 +0900 largefiles: put whole "hgmerge" process into the same "wlock" scope
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 15 Aug 2014 20:28:51 +0900] rev 22194
largefiles: put whole "hgmerge" process into the same "wlock" scope Before this patch, there are two distinct "wlock" scopes below in "hgmerge": 1. "merge.update" via original "hg.merge" function 2. "updatelfiles" specific "wlock" scope (to synchronize largefile dirstate) But these should be executed in the same "wlock" scope for consistency, because users of "hg.merge" don't get "wlock" explicitly before invocation of it. - merge in commands This patch puts almost all of the original "hgmerge" implementation into "_hgmerge" to reduce changes.
Fri, 15 Aug 2014 20:28:51 +0900 largefiles: put whole "hgupdaterepo" process into the same "wlock" scope
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Fri, 15 Aug 2014 20:28:51 +0900] rev 22193
largefiles: put whole "hgupdaterepo" process into the same "wlock" scope Before this patch, there are two distinct "wlock" scopes below in "hgupdaterepo": 1. "merge.update" via original "hg.updaterepo" function 2. "updatelfiles" specific "wlock" scope (to synchronize largefile dirstate) In addition to them, "dirstate.walk" is executed between these "wlock" scopes. But these should be executed in the same "wlock" scope for consistency, because many (indirect) users of "hg.updaterepo" don't get "wlock" explicitly before invocation of it. "hg.clean" is invoked without "wlock" from: - mqrepo.restore in mq - bisect in commands - update in commands "hg.update" is invoked without "wlock" from: - clone in mq - pullrebase in rebase - postincoming in commands (used in "hg pull -u", "hg unbundle") - update in commands This patch puts almost all original "hgupdaterepo" implementation into "_hgupdaterepo" to reduce changes.
Fri, 15 Aug 2014 14:33:19 +0900 annotate: inline definition of decorate() functions
Yuya Nishihara <yuya@tcha.org> [Fri, 15 Aug 2014 14:33:19 +0900] rev 22192
annotate: inline definition of decorate() functions
Fri, 15 Aug 2014 14:29:30 +0900 annotate: rewrite long short-circuit statement by if-elif-else
Yuya Nishihara <yuya@tcha.org> [Fri, 15 Aug 2014 14:29:30 +0900] rev 22191
annotate: rewrite long short-circuit statement by if-elif-else
Tue, 24 Jun 2014 17:27:18 +0100 revert: use modified information from both statuses
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 17:27:18 +0100] rev 22190
revert: use modified information from both statuses Using status information against the target ensures we are catching all files with modifications that need reverting. We still need to distinguish fresh modifications for backup purpose. test-largefile is affected because it reverted a file that needs no content change.
Tue, 24 Jun 2014 16:57:16 +0100 revert: drop special case handling for file unknown in parent
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 16:57:16 +0100] rev 22189
revert: drop special case handling for file unknown in parent We had a special case for file not caught by any categories. It was aimed at files missing in wc and wc's parent but existing in the target revision. This is now properly handled using status information.
Tue, 24 Jun 2014 16:53:22 +0100 revert: use "remove" information from both statuses
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 16:53:22 +0100] rev 22188
revert: use "remove" information from both statuses Using status information against the target to make sure we are catching all files that need to be re-added. We still need to distinguish fresh removal because they use a different message.
Fri, 01 Aug 2014 18:27:47 -0700 revert: process removed files missing in target as clean
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 01 Aug 2014 18:27:47 -0700] rev 22187
revert: process removed files missing in target as clean If a file does not exist in target and is marked as removed in the dirstate, we can mark it as clean. There are no changes needed to revert it.
Thu, 31 Jul 2014 15:52:56 -0700 revert: also track clean files
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 31 Jul 2014 15:52:56 -0700] rev 22186
revert: also track clean files Tracking clean files is the simplest way to be able to reports files that need no changes. So we explicitly retrieve them. This fixes a couple of test outputs where the lack of changes was not reported.
Fri, 01 Aug 2014 18:57:53 -0700 revert: triage "deleted" files into more appropriate categories
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 01 Aug 2014 18:57:53 -0700] rev 22185
revert: triage "deleted" files into more appropriate categories Status can return file as "deleted". This is only a special case related to working directory state: file is recorded as tracked but no file exists on disk. This will never be a state obtainable from manifest comparisons. "Deleted" files have another working directory status shadowed by the lack of file. They will -alway- be touched by revert. The "lack of file" can be seen as a modification. The file will never match the same "content" as in the revert target. From there we have two options: 1. The file exists in the target and can be seen as "modified". 2. The file does not exist in the target and can be seen as "added". So now we just dispatch elements from delete into appropriate categories.
Fri, 15 Aug 2014 10:54:15 -0500 unshelve: silence internal revert
Matt Mackall <mpm@selenic.com> [Fri, 15 Aug 2014 10:54:15 -0500] rev 22184
unshelve: silence internal revert This prepares for upcoming revert changes.
Fri, 15 Aug 2014 10:47:03 -0500 tests: fixup issue markers to make check-commit happy
Matt Mackall <mpm@selenic.com> [Fri, 15 Aug 2014 10:47:03 -0500] rev 22183
tests: fixup issue markers to make check-commit happy
Fri, 15 Aug 2014 03:24:40 +0200 incoming: don't request heads that already are common stable
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 03:24:40 +0200] rev 22182
incoming: don't request heads that already are common Pull would send a getbundle command where common heads were sent both as common and head, even though there is no reason to request a common head. The request was thus twice as big as necessary and more likely to hit HTTP header size limits. Instead, don't request heads that already are common. This is fixed in bundlerepo.getremotechanges . It could perhaps also have been fixed in discovery.findcommonincoming but that would have a bigger impact.
Fri, 15 Aug 2014 03:24:40 +0200 tests: improve test coverage for discovery and actual parameters for pulling stable
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 03:24:40 +0200] rev 22181
tests: improve test coverage for discovery and actual parameters for pulling
Fri, 15 Aug 2014 02:46:44 +0200 changectx: ancestor should only prefer merge.preferancestor if it is a revision stable
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 02:46:44 +0200] rev 22180
changectx: ancestor should only prefer merge.preferancestor if it is a revision The value '*' currently designates that bid merge should be used. The best way to test bid merge is to set preferancestor=* in the configuration file ... but then it would abort with unknown revision '*' when other code paths ended up in changectx.ancestor . Instead, just skip and ignore the value '*' when looking for a preferred ancestor.
Fri, 15 Aug 2014 02:39:01 +0200 merge: show the scary multiple ancestor hint for merges only, not for updates stable
Mads Kiilerich <madski@unity3d.com> [Fri, 15 Aug 2014 02:39:01 +0200] rev 22179
merge: show the scary multiple ancestor hint for merges only, not for updates Updates with uncommited changes will always only have one ancestor - the parent revision. Updates between existing revision should (and will) always give the same result no matter which ancestor is used. The warning is thus only relevant when doing a "real" merge.
Thu, 14 Aug 2014 16:26:41 -0700 discovery: prevent crash on unknown remote heads with old repo (issue4337) stable
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 14 Aug 2014 16:26:41 -0700] rev 22178
discovery: prevent crash on unknown remote heads with old repo (issue4337) When a remote is not capable of the `branchmap` wireproto command, we denote incoming heads with None. This leads to a crash in the code in charge of displaying the list of unknown remote heads. We now properly detect this case and display a shorter message in this case. The reason for this `set([None])` value is now documented.
Thu, 14 Aug 2014 14:59:42 -0700 obsstore.create: add a simple safeguard against cyclic markers stable
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 14 Aug 2014 14:59:42 -0700] rev 22177
obsstore.create: add a simple safeguard against cyclic markers We detect when there is a cycle in the marker itself (precursors being listed as successors).
Thu, 14 Aug 2014 14:57:03 -0700 debugobsolete: catch ValueError that may be raised by obsstore.create stable
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 14 Aug 2014 14:57:03 -0700] rev 22176
debugobsolete: catch ValueError that may be raised by obsstore.create There are already a couple of errors that obsstore.create can raise and we are going to introduce a cycle check too.
Thu, 14 Aug 2014 16:39:27 -0500 check-code: extend try/except/finally check for multiple except clauses
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 16:39:27 -0500] rev 22175
check-code: extend try/except/finally check for multiple except clauses
Thu, 14 Aug 2014 16:39:02 -0500 repoview: fix try/except/finally for py2.4
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 16:39:02 -0500] rev 22174
repoview: fix try/except/finally for py2.4
Thu, 14 Aug 2014 16:25:47 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 16:25:47 -0500] rev 22173
merge with stable
Thu, 14 Aug 2014 16:18:45 -0500 test-run-tests: fix up slash/backslash on diff chunks for Windows stable
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 16:18:45 -0500] rev 22172
test-run-tests: fix up slash/backslash on diff chunks for Windows
Wed, 13 Aug 2014 15:55:45 -0700 test-largefiles: add test for hg log --follow --patch with path stable
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:55:45 -0700] rev 22171
test-largefiles: add test for hg log --follow --patch with path This was the one case for test-largefiles that was not broken.
Wed, 13 Aug 2014 15:51:33 -0700 largefiles: don't override matchandpats for always matchers (issue4334) stable
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:51:33 -0700] rev 22170
largefiles: don't override matchandpats for always matchers (issue4334) This makes hg log --follow --patch work, since in cmdutil._makelogrevset we use the non-follow matcher for hg log --follow --patch with no file arguments.
Wed, 13 Aug 2014 15:18:41 -0700 largefiles: in overridelog, use non-lf matcher for patch generation (issue4334) stable
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:18:41 -0700] rev 22169
largefiles: in overridelog, use non-lf matcher for patch generation (issue4334) This has actually been broken since at least Mercurial 2.8 -- hg log --patch with largefiles only used to work when no largefiles existed. Rev 5809d62e7106 exposed this bug for all cases.
Wed, 13 Aug 2014 15:13:50 -0700 largefiles: drop setting lfstatus in overridelog (issue4334) stable
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:13:50 -0700] rev 22168
largefiles: drop setting lfstatus in overridelog (issue4334) lfstatus should only be True for operations where we want standins to be printed out. We explicitly do not want that for historical operations like log. Other historical operations like hg diff -r A -r B don't print out standins either. This is required to fix issue4334, but doesn't fix anything by itself. That's why there aren't any tests accompanying this patch.
Wed, 13 Aug 2014 15:17:03 -0700 cmdutil: add a hook for making custom non-follow log file matchers stable
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:17:03 -0700] rev 22167
cmdutil: add a hook for making custom non-follow log file matchers This will be used by largefiles (and basically only by largefiles) in an upcoming patch.
Wed, 13 Aug 2014 15:15:13 -0700 cmdutil: rename _makelogfilematcher to _makefollowlogfilematcher stable
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 15:15:13 -0700] rev 22166
cmdutil: rename _makelogfilematcher to _makefollowlogfilematcher We're going to add a _makenofollowlogfilematcher in an upcoming patch.
Thu, 14 Aug 2014 15:21:48 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Thu, 14 Aug 2014 15:21:48 -0500] rev 22165
merge with stable
Wed, 13 Aug 2014 22:22:24 +0900 alias: exit from bad definition by Abort
Yuya Nishihara <yuya@tcha.org> [Wed, 13 Aug 2014 22:22:24 +0900] rev 22164
alias: exit from bad definition by Abort
Wed, 13 Aug 2014 22:18:28 +0900 alias: show one-line hint for command provided by disabled extension
Yuya Nishihara <yuya@tcha.org> [Wed, 13 Aug 2014 22:18:28 +0900] rev 22163
alias: show one-line hint for command provided by disabled extension It will be a hint of Abort exception. "hg help <alias>" provides the detailed version as before.
Wed, 13 Aug 2014 19:38:47 +0900 help: provide help of bad alias without executing aliascmd()
Yuya Nishihara <yuya@tcha.org> [Wed, 13 Aug 2014 19:38:47 +0900] rev 22162
help: provide help of bad alias without executing aliascmd() The output is slightly changed because of minirst formatting. Previously, ui.pushbuffer() had no effect because "badalias" message was written to stderr. "if not unknowncmd" should no longer be needed because there's no call loop.
Wed, 13 Aug 2014 19:28:42 +0900 alias: provide "unknowncmd" flag to tell help to look for disabled command
Yuya Nishihara <yuya@tcha.org> [Wed, 13 Aug 2014 19:28:42 +0900] rev 22161
alias: provide "unknowncmd" flag to tell help to look for disabled command This patch prepares for breaking the call loop: help.help_() -> cmdalias() -> commands.help_() -> help.help_().
Sat, 17 May 2014 21:13:31 +0900 alias: keep error message in "badalias" so that help can see it
Yuya Nishihara <yuya@tcha.org> [Sat, 17 May 2014 21:13:31 +0900] rev 22160
alias: keep error message in "badalias" so that help can see it Upcoming patches will - change help_() to get badalias message without executing cmdalias() - raise Abort on bad alias
Sat, 17 May 2014 20:47:31 +0900 alias: add test for alias command provided by disabled extension
Yuya Nishihara <yuya@tcha.org> [Sat, 17 May 2014 20:47:31 +0900] rev 22159
alias: add test for alias command provided by disabled extension This should complete cases where "badalias" is set.
Wed, 13 Aug 2014 23:21:52 -0700 alias: expand "$@" as list of parameters quoted individually (BC) (issue4200)
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 23:21:52 -0700] rev 22158
alias: expand "$@" as list of parameters quoted individually (BC) (issue4200) Before this patch, there was no way to pass in all the positional parameters as separate words down to another command. (1) $@ (without quotes) would expand to all the parameters separated by a space. This would work fine for arguments without spaces, but arguments with spaces in them would be split up by POSIX shells into separate words. (2) '$@' (in single quotes) would expand to all the parameters within a pair of single quotes. POSIX shells would then treat the entire list of arguments as one word. (3) "$@" (in double quotes) would expand similarly to (2). With this patch, we expand "$@" (in double quotes) as all positional parameters, quoted individually with util.shellquote, and separated by spaces. Under standard field-splitting conditions, POSIX shells will tokenize each argument into exactly one word. This is a backwards-incompatible change, but the old behavior was arguably a bug: Bourne-derived shells have expanded "$@" as a tokenized list of positional parameters for a very long time. I could find this behavior specified in IEEE Std 1003.1-2001, and this probably goes back to much further before that.
Wed, 13 Aug 2014 22:37:09 -0700 test-alias: add some tests to ensure we aren't double-substituting
Siddharth Agarwal <sid0@fb.com> [Wed, 13 Aug 2014 22:37:09 -0700] rev 22157
test-alias: add some tests to ensure we aren't double-substituting An earlier iteration of an upcoming patch caused inadvertent double substitution. Ensure we have test coverage for this.
Thu, 31 Jul 2014 16:03:26 -0700 revert: issue "no changes needed" message for files missing on both side
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 31 Jul 2014 16:03:26 -0700] rev 22156
revert: issue "no changes needed" message for files missing on both side When a file was marked as removed in the working copy and did not existed in the target of the revert, we did not issued any message pointing that no change was needed to the file (implicitly saying that revert had changed the file). We now properly issue a message in this situation. Tests change in and handful of case where the message was documented as missing.
Tue, 24 Jun 2014 15:47:12 +0100 revert: call status against revert target too
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 15:47:12 +0100] rev 22155
revert: call status against revert target too We now call status against the target (and possibly against the working directory parent is different). We do not use the information from the two sources yet, but this is coming soon. We need the status information aganst the dirstate in all case because we need to be able to backup local modification.
Tue, 24 Jun 2014 15:35:43 +0100 revert: prefix variable names for dirstate status with "ds"
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 15:35:43 +0100] rev 22154
revert: prefix variable names for dirstate status with "ds" As we are going to introduce status again other revision we needs to distinguish between data from dirstate status and the other one. We prefix the existing data with "ds" to highlight this.
Tue, 24 Jun 2014 15:28:22 +0100 revert: move manifest membership condition outside of the loop
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 24 Jun 2014 15:28:22 +0100] rev 22153
revert: move manifest membership condition outside of the loop Currently, revset is using information from dirstate status and alter its behavior whenever the file exist in the target manifest or not. This tests are done a big for loop. We move this member ship testing outside of the loop and simplifies associates data structure. This is a step toward a cleaner implementation of revert based on status.
Wed, 06 Aug 2014 16:51:41 -0400 histedit: add "roll" command to fold commit data and drop message (issue4256)
Mike Edgar <adgar@google.com> [Wed, 06 Aug 2014 16:51:41 -0400] rev 22152
histedit: add "roll" command to fold commit data and drop message (issue4256) This new histedit command (short for "rollup") is a variant of "fold" akin to "hg amend" for working copy: it accumulates changes without interrupting the user and asking for an updated commit message.
Tue, 12 Aug 2014 09:39:14 -0700 repoview: cache hidden changesets
David Soria Parra <davidsp@fb.com> [Tue, 12 Aug 2014 09:39:14 -0700] rev 22151
repoview: cache hidden changesets Use the introduced caching infrastructure to cache hidden changesets. We crosscheck if the content of the cache unless experimental.verifyhiddencache is set to False. This will be removed in the future. Without crosschecking the caches speed ups hg status and other commands: without caching: $ time hg status hg status 0.72s user 0.20s system 100% cpu 0.917 total with caching $ time hg status hg status 0.49s user 0.15s system 100% cpu 0.645 total
Tue, 12 Aug 2014 16:48:54 -0700 repoview: add caching bits
David Soria Parra <davidsp@fb.com> [Tue, 12 Aug 2014 16:48:54 -0700] rev 22150
repoview: add caching bits Add a caching infrastructure to cache hidden changesets. The cache tries to read the cache lazily and falls back to recomputing if no wlock can be obtain. To validate the cache we store a sha of the obstore content and repo heads in the beginning of the cache which we check every request.
Wed, 06 Aug 2014 13:26:04 -0700 repoview: split _gethiddenblockers
David Soria Parra <davidsp@fb.com> [Wed, 06 Aug 2014 13:26:04 -0700] rev 22149
repoview: split _gethiddenblockers Split up _gethiddenblockers into two categories: (1) "static' blockers that solely rely on the contents of obstore and are visible children of hidden changsets. (2) "dynamic" blockers, appearing by having wd parents, bookmarks or tags pointing to hidden changesets. We assume that (1) doesn't change often and can be easily cached with a good invalidation strategy. (2) change often, but barely produce blockers, so we can recompute them if necessary.
Tue, 12 Aug 2014 16:42:24 -0700 repoview: use set for blockers
David Soria Parra <davidsp@fb.com> [Tue, 12 Aug 2014 16:42:24 -0700] rev 22148
repoview: use set for blockers Blockers should be unique but tags and bookmarks could point to the same rev, therefore use a set to ensure that we don't have duplicates.
Wed, 13 Aug 2014 11:50:13 -0700 histedit: preserve initial author on fold (issue4296) stable
Martin von Zweigbergk <martinvonz@gmail.com> [Wed, 13 Aug 2014 11:50:13 -0700] rev 22147
histedit: preserve initial author on fold (issue4296) When the authorship of the changeset folded in does not match that of the base changeset, we currently use the configured ui.username instead. This is especially surprising when the user is not the author of either of the changesets. In such cases, the resulting authorship (the user's) is clearly incorrect. Even when the user is folding in a patch they authored themselves, it's not clear whether they should take over the authorship. Let's instead keep it simple and always preserve the base changeset's authorship. This is also how "git rebase -i" handles folding/squashing.
Wed, 13 Aug 2014 18:50:35 -0500 run-tests: fix some io ordering stable
Matt Mackall <mpm@selenic.com> [Wed, 13 Aug 2014 18:50:35 -0500] rev 22146
run-tests: fix some io ordering backported from default
Wed, 13 Aug 2014 15:06:58 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Wed, 13 Aug 2014 15:06:58 -0500] rev 22145
merge with stable
Wed, 25 Jun 2014 17:40:41 +0100 test-revert: add case where file is tracked but deleted in working directory
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:40:41 +0100] rev 22144
test-revert: add case where file is tracked but deleted in working directory
Fri, 27 Jun 2014 18:25:19 +0200 test-revert: add case with untracked files with unique content
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:25:19 +0200] rev 22143
test-revert: add case with untracked files with unique content This test highlights similar misbehavior as its parent changesets.
Fri, 27 Jun 2014 18:23:45 +0200 test-revert: add case with untracked files with reverted content
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:23:45 +0200] rev 22142
test-revert: add case with untracked files with reverted content This test highlights similar misbehaviors as its parent changesets.
Fri, 27 Jun 2014 18:10:45 +0200 test-revert: add case where file exists but is untracked in working directory
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:10:45 +0200] rev 22141
test-revert: add case where file exists but is untracked in working directory This test highlights a small misbehavior in output when reverting to another revision not including the untracked file.
Fri, 27 Jun 2014 18:09:46 +0200 test-revert: add case where the file is marked as removed in the wc
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:09:46 +0200] rev 22140
test-revert: add case where the file is marked as removed in the wc Unlike untracked, the file is also missing from the working directory. This test highlights a small misbehavior in output when reverting to another revision.
Fri, 27 Jun 2014 18:08:16 +0200 test-revert: add case where wc content is different from "base" and "parent"
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:08:16 +0200] rev 22139
test-revert: add case where wc content is different from "base" and "parent" This test highlights a case where backups are not created and the user may lose data.
Fri, 27 Jun 2014 18:07:33 +0200 test-revert: add case where wc content is already reverted to base content
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:07:33 +0200] rev 22138
test-revert: add case where wc content is already reverted to base content This test highlights multiple misbehaviors of revert. We augment the test comments accordingly.
Fri, 27 Jun 2014 18:02:09 +0200 test-revert: add case where file exists neither in "base" nor in "parent"
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:02:09 +0200] rev 22137
test-revert: add case where file exists neither in "base" nor in "parent"
Fri, 27 Jun 2014 18:01:16 +0200 test-revert: add case where the file is removed between "base" and "parent"
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:01:16 +0200] rev 22136
test-revert: add case where the file is removed between "base" and "parent"
Fri, 27 Jun 2014 18:00:49 +0200 test-revert: add case where file is unchanged between "base" and "parent"
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 18:00:49 +0200] rev 22135
test-revert: add case where file is unchanged between "base" and "parent" This test highlights a minor misbehavior in the message displayed during an explicit revert with a target revision.
Wed, 13 Aug 2014 14:05:08 -0500 test-run-tests: fix stdout/stderr io ordering stable
Matt Mackall <mpm@selenic.com> [Wed, 13 Aug 2014 14:05:08 -0500] rev 22134
test-run-tests: fix stdout/stderr io ordering
Wed, 25 Jun 2014 17:37:13 +0100 test-revert: add case where file is added between "base" and "parent"
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:37:13 +0100] rev 22133
test-revert: add case where file is added between "base" and "parent"
Tue, 12 Aug 2014 17:22:57 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 17:22:57 -0500] rev 22132
merge with stable
Wed, 25 Jun 2014 17:31:53 +0100 test-revert: add methodical revert to "base" with explicit file path
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:31:53 +0100] rev 22131
test-revert: add methodical revert to "base" with explicit file path We now also test reverting file to another revision's content. However this differs from previously introduced test by using the explicit path of each "case file" when calling revert. This should result in the same result regarding file content and backup creation, but the output of the `hg revert` call should differ.
Wed, 25 Jun 2014 17:22:47 +0100 test-revert: add methodical revert with explicit file path
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:22:47 +0100] rev 22130
test-revert: add methodical revert with explicit file path We now also test reverting file to the working directory parent content. However this differs from the previously introduced test by using the explicit path of each "case file" when calling revert. This should result in the same result regarding file content and backup creation, but the output of the `hg revert` call should differ.
Wed, 25 Jun 2014 17:16:05 +0100 test-revert: add methodical revert to "base"
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:16:05 +0100] rev 22129
test-revert: add methodical revert to "base" We now also test reverting s file to the content of another revision. This is still done using the `--all` flag.
Wed, 25 Jun 2014 17:03:55 +0100 test-revert: add methodical revert to parent for working directory
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:03:55 +0100] rev 22128
test-revert: add methodical revert to parent for working directory Now that we can automatically generate states, we need to actually run revert on them and check the result. While running such tests we are checking multiple elements. The output of the `hg revert` command, the resulting content of file, and the creation of backup file. The first practical test is using the simple case `hg revert --all`, reverting all files to working directory parent content.
Wed, 25 Jun 2014 17:24:18 +0100 test-revert: display the list of all generated cases
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 17:24:18 +0100] rev 22127
test-revert: display the list of all generated cases This will help to track all existing cases. (still very simple now)
Fri, 27 Jun 2014 16:08:09 +0200 test-revert: also create a text version of the snapshot
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 27 Jun 2014 16:08:09 +0200] rev 22126
test-revert: also create a text version of the snapshot The text version is just a list of existing files with their content. We use a small custom script for that. This is going to be very useful for comparing revert results with revert target content.
Tue, 12 Aug 2014 12:53:23 -0500 hg-test-mode: make exit code highlight work again
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 12:53:23 -0500] rev 22125
hg-test-mode: make exit code highlight work again
Wed, 25 Jun 2014 16:37:06 +0100 test-revert: prepare methodical testing of revert cases
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 16:37:06 +0100] rev 22124
test-revert: prepare methodical testing of revert cases We introduce a script to generate revert cases and use it to prepare a test repo. See the inline documentation for details.
Wed, 25 Jun 2014 15:59:21 +0100 test-revert: drop useless comments
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 15:59:21 +0100] rev 22123
test-revert: drop useless comments There are multiple comments explaining the expected output of commands. This is an old relic of the pre-unified test era. We remove them for uselessness.
Tue, 12 Aug 2014 11:17:29 -0500 run-tests: don't double lines on build failure output stable
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 11:17:29 -0500] rev 22122
run-tests: don't double lines on build failure output
Tue, 12 Aug 2014 11:10:57 -0500 test-run-tests: filter pwd alias for Windows stable
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 11:10:57 -0500] rev 22121
test-run-tests: filter pwd alias for Windows
Tue, 12 Aug 2014 11:02:30 -0500 run-tests: self-test on Windows needs binary streams stable
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 11:02:30 -0500] rev 22120
run-tests: self-test on Windows needs binary streams
Tue, 12 Aug 2014 04:50:58 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 04:50:58 -0500] rev 22119
merge with stable
Tue, 12 Aug 2014 04:11:32 -0500 help: normalize helplist hints
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 04:11:32 -0500] rev 22118
help: normalize helplist hints
Tue, 12 Aug 2014 04:00:42 -0500 help: fold repeatable option message into option table header
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 04:00:42 -0500] rev 22117
help: fold repeatable option message into option table header This will hopefully conserve some limited user attention.
Tue, 12 Aug 2014 03:53:33 -0500 help: roll option list header into option formatter
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:53:33 -0500] rev 22116
help: roll option list header into option formatter
Tue, 12 Aug 2014 03:42:09 -0500 help: refactor helplist optlist mess
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:42:09 -0500] rev 22115
help: refactor helplist optlist mess No output changes
Tue, 12 Aug 2014 03:25:51 -0500 help: normalize topic and extension verbose hints
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:25:51 -0500] rev 22114
help: normalize topic and extension verbose hints
Tue, 12 Aug 2014 03:18:50 -0500 help: normalize hint about enabling extensions
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:18:50 -0500] rev 22113
help: normalize hint about enabling extensions
Tue, 12 Aug 2014 03:12:24 -0500 help: normalize extension shadow hint
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:12:24 -0500] rev 22112
help: normalize extension shadow hint
Tue, 12 Aug 2014 03:09:26 -0500 help: improve command summary hint
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:09:26 -0500] rev 22111
help: improve command summary hint This adds our normal hint parentheses, corrects the command syntax (consider config), and corrects the fullness of help you'll get.
Tue, 12 Aug 2014 03:01:37 -0500 help: tweak --verbose command help hint
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 03:01:37 -0500] rev 22110
help: tweak --verbose command help hint We used to have two slightly different message which people wouldn't read... and then complain that they couldn't find the global options or examples. So we unify them into one message that's upfront that STUFF IS INTENTIONALLY HIDDEN and that looks more like our normal hint style.
Tue, 12 Aug 2014 00:42:05 -0500 hg-test-mode: don't highlight variables in output
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 00:42:05 -0500] rev 22109
hg-test-mode: don't highlight variables in output This was disabling highlighting the rest of the line for $REASONS. Instead, we only highlight when we think we're on a 'command' line.
Tue, 12 Aug 2014 00:40:24 -0500 test-run-tests: test --view
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 00:40:24 -0500] rev 22108
test-run-tests: test --view
Tue, 12 Aug 2014 00:33:48 -0500 run-tests: don't show 'i' for tests that don't match a keyword
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 00:33:48 -0500] rev 22107
run-tests: don't show 'i' for tests that don't match a keyword
Tue, 12 Aug 2014 02:40:42 -0500 repoview: filter tags to non-existent nodes from blockers (issue4328) stable
Matt Mackall <mpm@selenic.com> [Tue, 12 Aug 2014 02:40:42 -0500] rev 22106
repoview: filter tags to non-existent nodes from blockers (issue4328)
Mon, 11 Aug 2014 23:45:08 -0400 revset: bookmark revset interprets 'literal:' prefix correctly (issue4329) stable
Michael O'Connor <mkoconnor@gmail.com> [Mon, 11 Aug 2014 23:45:08 -0400] rev 22105
revset: bookmark revset interprets 'literal:' prefix correctly (issue4329)
Mon, 11 Aug 2014 17:45:50 -0500 run-tests: attempt to fix iolock handling
Matt Mackall <mpm@selenic.com> [Mon, 11 Aug 2014 17:45:50 -0500] rev 22104
run-tests: attempt to fix iolock handling Ideally, when using -j and -i together, when a prompt comes up, we'd like all other output to wait (but testing to continue!). This gets other output to wait by adding back a bunch of the locking that formerly existed. We switch to a recursive lock to deal with the restructuring due to unittest compatibility. Running tests continue to run, but now the scheduler doesn't schedule any new tasks while waiting at a prompt because no task slots become available due to result output happening in the thread and blocking on the iolock.
Mon, 11 Aug 2014 13:10:00 -0500 unbundle: fix pyflakes warning about wc stable
Matt Mackall <mpm@selenic.com> [Mon, 11 Aug 2014 13:10:00 -0500] rev 22103
unbundle: fix pyflakes warning about wc
Mon, 11 Aug 2014 11:24:05 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Mon, 11 Aug 2014 11:24:05 -0500] rev 22102
merge with stable
Sat, 02 Aug 2014 17:04:53 -0700 check-code: allow an escape pattern to be specified for testpattern
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 02 Aug 2014 17:04:53 -0700] rev 22101
check-code: allow an escape pattern to be specified for testpattern Before this patch it was impossible to introduce a #no-xxx comment to disable a test pattern warning.
Sat, 02 Aug 2014 17:01:55 -0700 check-code: capture "wc" as a word
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 02 Aug 2014 17:01:55 -0700] rev 22100
check-code: capture "wc" as a word Otherwise entries such as "wcchange" give false negative
Wed, 25 Jun 2014 15:58:05 +0100 test-revert: improve comment
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 25 Jun 2014 15:58:05 +0100] rev 22099
test-revert: improve comment We highlight the behavior tested by each sections. (This is a gratuitous improvement before significant upgrade of the test and massive refactoring of the revert code)
Mon, 11 Aug 2014 22:29:43 +0900 largefiles: synchronize lfdirstate with dirstate after automated committing
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22098
largefiles: synchronize lfdirstate with dirstate after automated committing Before this patch, after successful "hg rebase" of the revision removing largefiles, "hg status" may still show ""R" for such largefiles unexpectedly. "lfilesrepo.commit" executes the special code path for automated committing while rebase/transplant, and lfdirstate entries for removed files aren't updated in this code path, even after successful committing. Then, "R" entries still existing in lfdirstate cause unexpected "hg status" output. This patch synchronizes lfdirstate with dirstate after automated committing. This patch passes False as "normallookup" to "synclfdirstate", because modified files in "files()" of the recent (= just committed) context should be "normal"-ed. This is a temporary way to fix with less changes. For fundamental resolution of this kind of problems in the future, lfdirstate should be updated with dirstate simultaneously. Hooking "markcommitted" of ctx in "localrepository.commitctx" may achieve this. This problem occurs, only when (1) the parent of the working directory is rebased and (2) it removes largefiles, because: - if the parent of the working directory isn't rebased, returning to the initial revision (= update) after rebase hides this problem - files added on "other" branch (= rebase target) are treated not as "added" but as "modified" (= "normal" status and "unset" timestamp) at merging This patch tests also the status of added largefile, but it is only for avoiding regression. In addition to conditions above, "hg status" must not take existing files to reproduce this problem, because existing files make "match._files" not empty in "lfilesrepo.status" code path below: def sfindirstate(f): sf = lfutil.standin(f) dirstate = self.dirstate return sf in dirstate or sf in dirstate.dirs() match._files = [f for f in match._files if sfindirstate(f)] Not empty "match._files" prevents "status" on lfdirstate from returning the result containing problematic "R" files. This is reason why "large1" (removed) and "largeX" (added) are checked separately in this patch. Problematic code path in "lfilesrepo.commit" is used also by "hg transplant", but this problem doesn't occur at "hg transplant", because invocation of "updatelfiles" after transplant-ing in "overridetransplant" causes cleaning lfdirstate up. This patch tests also "hg transplant" as same as "hg rebase", but it is only for avoiding regression.
Mon, 11 Aug 2014 22:29:43 +0900 largefiles: drop orphan entries from lfdristat at "hg rollback"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22097
largefiles: drop orphan entries from lfdristat at "hg rollback" Before this patch, newly added (but not yet committed) largefiles aren't treated as unknown ("?") after "hg rollback". After "hg rollback", lfdirstate still contains "A" status entries for such largefiles, even though corresponding entries for standins are already dropped from dirstate. Such "orphan" entries in lfdirstate prevent unknown (large)files in the working directory from being listed up in "unknown" list. The code path in "if working" route of "lfilesrepo.status" below drops largefiles tracked in lfdirstate from "unknown" list: lfiles = set(lfdirstate._map) # Unknown files result[4] = set(result[4]).difference(lfiles) This patch drops orphan entries from lfdristate at "hg rollback". This is a temporary way to fix with less changes. For fundamental resolution of this kind of problems in the future, lfdirstate should be rollback-ed as a part of transaction, as same as dirstate.
Mon, 11 Aug 2014 22:29:43 +0900 largefiles: restore R status of removed largefiles correctly at "hg rollback"
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22096
largefiles: restore R status of removed largefiles correctly at "hg rollback" Before this patch, removed or forgotten largefiles aren't treated as removed ("R") after "hg rollback". Removed ones are treated as missing ("!") and forgotten ones are treated as clean ("C") unexpectedly. "overriderollback" uses "normallookup" to restore status in lfdirstate for largefiles other than ones not added in rollback-ed revision, but this isn't correct for removed (or forgotten) largefiles. This patch uses "lfutil.synclfdirstate" to restore "R" status of removed (or forgotten) largefiles correctly at "hg rollback". This is a temporary way to fix with less changes. For fundamental resolution of this kind of problems in the future, lfdirstate should be rollback-ed as a part of transaction, as same as dirstate.
Mon, 11 Aug 2014 22:29:43 +0900 largefiles: factor out synchronization of lfdirstate for future use
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22095
largefiles: factor out synchronization of lfdirstate for future use
Mon, 11 Aug 2014 22:29:43 +0900 largefiles: put whole rollback-ing process into the same "wlock" scope
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 11 Aug 2014 22:29:43 +0900] rev 22094
largefiles: put whole rollback-ing process into the same "wlock" scope Before this patch, there are three distinct "wlock" scopes in "overriderollback": 1. "localrepository.rollback" via original "rollback" command, 2. "merge.update" for reverting standin files only, and 3. "overriderollback" specific "wlock" scope (to synchronize largefile dirstate) But these should be executed in the same "wlock" scope for consistency.
Mon, 11 Aug 2014 09:35:24 -0500 tests: use a decorator for hghave checks
Matt Mackall <mpm@selenic.com> [Mon, 11 Aug 2014 09:35:24 -0500] rev 22093
tests: use a decorator for hghave checks
Sun, 10 Aug 2014 23:13:12 -0500 hg-test-mode: colorize HGFOO and TESTFOO environment variables
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 23:13:12 -0500] rev 22092
hg-test-mode: colorize HGFOO and TESTFOO environment variables
Sun, 10 Aug 2014 23:09:23 -0500 unbundle: don't advance bookmarks (issue4322) (BC) stable
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 23:09:23 -0500] rev 22091
unbundle: don't advance bookmarks (issue4322) (BC) This behavior didn't make much sense and interacts badly with things that use unbundle internally like shelve. Presumably, the original rationale was that since bundles didn't contain bookmarks, this gave a sense of keeping bookmarks up-to-date like would happen with a corresponding pull. However, since it only updated the current active bookmark, and bare update already did that anyway, this is pretty slim. Notably, the corresponding test actually works better without this feature.
Sun, 10 Aug 2014 15:26:33 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 15:26:33 -0500] rev 22090
merge with stable
Sun, 10 Aug 2014 15:26:12 -0500 tests: more bundle2 non-binary file test fixes stable
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 15:26:12 -0500] rev 22089
tests: more bundle2 non-binary file test fixes
Sun, 10 Aug 2014 14:30:30 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 14:30:30 -0500] rev 22088
merge with stable
Sun, 10 Aug 2014 13:53:36 -0500 hgweb: avoid config object race with hgwebdir (issue4326) stable
Matt Mackall <mpm@selenic.com> [Sun, 10 Aug 2014 13:53:36 -0500] rev 22087
hgweb: avoid config object race with hgwebdir (issue4326) Turns out hgwebdir passes full repo objects to each hgweb request instance, but with a shared baseui. We explicitly break the sharing.
Sat, 09 Aug 2014 16:15:52 -0500 test-commandserver.py: filter path separator stable
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 16:15:52 -0500] rev 22086
test-commandserver.py: filter path separator Was failing on Windows: -bundle.mainreporoot=$TESTTMP/repo +bundle.mainreporoot=$TESTTMP\repo
Sat, 09 Aug 2014 16:06:01 -0500 merge with stable
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 16:06:01 -0500] rev 22085
merge with stable
Sat, 09 Aug 2014 16:05:03 -0500 merge with i18n stable
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 16:05:03 -0500] rev 22084
merge with i18n
Sat, 09 Aug 2014 16:04:36 -0500 i18n-ru: fix RST breakage spotted by test-gendoc stable
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 16:04:36 -0500] rev 22083
i18n-ru: fix RST breakage spotted by test-gendoc test-gendoc complained: % extracting documentation from ru checking for parse errors + gendoc-ru.txt:5686: (WARNING/2) Field list ends without a blank line; unexpected unindent. + gendoc-ru.txt:8327: (WARNING/2) Definition list ends without a blank line; unexpected unindent.
Sat, 09 Aug 2014 15:46:54 -0500 i18n-ru: undo fix buildbot breakage stable
Matt Mackall <mpm@selenic.com> [Sat, 09 Aug 2014 15:46:54 -0500] rev 22082
i18n-ru: undo fix buildbot breakage Buildbot complained: $ python check-translation.py *.po + ru.po:9576:fatal(promptchoice): number of choices differs between msgid and msgstr + [1] Prompt text was obviously wrong.. because it didn't include a prompt.
Fri, 08 Aug 2014 17:45:36 -0500 contrib: add emacs mode for *.t files
Matt Mackall <mpm@selenic.com> [Fri, 08 Aug 2014 17:45:36 -0500] rev 22081
contrib: add emacs mode for *.t files
Thu, 07 Aug 2014 14:11:36 -0700 phase: attach phase to the transaction instead of the lock
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 14:11:36 -0700] rev 22080
phase: attach phase to the transaction instead of the lock The phase cache file is no longer written on lock release, it is now handled by the transaction (as changesets and obsolescence markers are). (Hooray) As we stop relying on the lock to write phase, repos with no existing phase information will need to wait for a phase move or a strip to happen in order to get the first write in the `phaseroots` file. This explain the change in test-inherit-mode.t. This should not have any side effects but in very obscure cases where people interact with pre-2.1 and post-2.1 versions of Mercurial on the same repo while having MQ patches applied but the MQ extension disabled from time to time. A case unlikely enough to not be worth preserving the old behavior with awful hacks.
Thu, 07 Aug 2014 14:41:00 -0700 phase: extract the phaseroots serialization in a dedicated method
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 14:41:00 -0700] rev 22079
phase: extract the phaseroots serialization in a dedicated method In most case, the file creation logic will be handled by the transaction itself. The write method has to stay around for the case where the repository is modified outside a transaction (strip).
Thu, 07 Aug 2014 14:40:02 -0700 transaction: add a file generation mechanism
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 14:40:02 -0700] rev 22078
transaction: add a file generation mechanism A new `transaction.addfilegenerator` function is added. It allows external code to register files to be generated. See inline documentation for details. It is important to gather all file creation logic on the transaction as at some point we'll want to mimic the "pre-transaction-commit" logic that we use for revlog. I'm refering to the logic that lets hooks see the result of the transaction before it actually gets committed.
Thu, 07 Aug 2014 10:54:17 -0700 transaction: backup file in a dedicated "namespace"
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 10:54:17 -0700] rev 22077
transaction: backup file in a dedicated "namespace" File backup may conflict with other "journal.*" file. We add a fixed part in the backup name file to prevent it.
Thu, 07 Aug 2014 11:56:32 -0700 transaction: use `self.journal` to create backup file
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 07 Aug 2014 11:56:32 -0700] rev 22076
transaction: use `self.journal` to create backup file Transaction journal name is "journal" in most case, but it can be something else. We use the appropriate attribute to create the file.
Tue, 17 Jun 2014 20:55:06 -0700 memctx: add note about p2
Sean Farley <sean.michael.farley@gmail.com> [Tue, 17 Jun 2014 20:55:06 -0700] rev 22075
memctx: add note about p2
Fri, 25 Jul 2014 20:20:26 -0500 memfilectx: add remove and write methods
Sean Farley <sean.michael.farley@gmail.com> [Fri, 25 Jul 2014 20:20:26 -0500] rev 22074
memfilectx: add remove and write methods Similar to the previous patch for workingfilectx, this patch will allow abstracting localrepo.remove / write method to refactor working directory code but instead operate on files in memory.
Wed, 02 Jul 2014 14:01:01 -0500 workingfilectx: add remove and write methods
Sean Farley <sean.michael.farley@gmail.com> [Wed, 02 Jul 2014 14:01:01 -0500] rev 22073
workingfilectx: add remove and write methods This patch will allow abstracting localrepo.remove / write method to refactor working directory code.
Fri, 25 Jul 2014 19:36:01 -0500 memctx: create a filectxfn if it is not callable
Sean Farley <sean.michael.farley@gmail.com> [Fri, 25 Jul 2014 19:36:01 -0500] rev 22072
memctx: create a filectxfn if it is not callable This will allow future patches to construct a memctx based on another context or any other store-type object.
Thu, 07 Aug 2014 11:39:19 -0400 test-patchbomb.t: work around Python change d579866d6419 (issue4188)
Augie Fackler <raf@durin42.com> [Thu, 07 Aug 2014 11:39:19 -0400] rev 22071
test-patchbomb.t: work around Python change d579866d6419 (issue4188) Python 2.7.7 and later (as well as some ubuntu/debian packages of 2.7.6) include a fix that makes the email module more pedantically correct for MIME boundaries, but this breaks our tests. We work around this by filtering the output of any 'hg email' invocations in the test that produce MIME messages.
Tue, 05 Aug 2014 23:52:21 -0700 phase: add a transaction argument to retractboundary
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 05 Aug 2014 23:52:21 -0700] rev 22070
phase: add a transaction argument to retractboundary We now pass a transaction option to this phase movement function. The object is currently not used by the function, but it will be in the future. All call sites have been updated. Most call sites were already enclosed in a transaction for a long time. The handful of others have been recently updated in previous commit.
Wed, 06 Aug 2014 01:54:19 -0700 phase: add a transaction argument to advanceboundary
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 06 Aug 2014 01:54:19 -0700] rev 22069
phase: add a transaction argument to advanceboundary We now pass a transaction option to this phase movement function. The object is currently not used by the function, but it will be in the future. All call sites have been updated. Most call sites were already enclosed in a transaction for a long time. The handful of others have been recently updated in previous commit. The retractboundary function remains to be upgraded.
Wed, 06 Aug 2014 00:54:37 -0700 pull: pre-filter remote phases before moving local ones
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 06 Aug 2014 00:54:37 -0700] rev 22068
pull: pre-filter remote phases before moving local ones We were relying on the phase internals to filter out redundant phase information from remove. However as we plan to integrate phase movement inside the transaction, we want to avoid useless transaction creation on no-op pulls. Therefore we filter out all the information that already matches the current repository state. This will let us create a transaction only when there is actual phase movement needed.
Wed, 06 Aug 2014 01:40:51 -0700 test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 06 Aug 2014 01:40:51 -0700] rev 22067
test-check-commit-hg.t: automatically test all 'draft() and ::.' changesets We introduce a test-check-commit-hg.t file that will happily run the check-commit file on all draft changeset under the working directory. This should help newcomers to catch up with the rules. (And will helps old timer from time to time).
Mon, 04 Aug 2014 16:08:42 +0100 i18n-ru: syncronized with 45a01832cad1 stable
Alexander Sauta <demosito@gmail.com> [Mon, 04 Aug 2014 16:08:42 +0100] rev 22066
i18n-ru: syncronized with 45a01832cad1
Mon, 04 Aug 2014 16:21:58 +0100 merge with i18n stable
Alexander Sauta <demosito@gmail.com> [Mon, 04 Aug 2014 16:21:58 +0100] rev 22065
merge with i18n
Mon, 04 Aug 2014 18:51:18 +0400 i18n-ru: sync with ad56fc55cbc3 (fuzzies) stable
Alexander Sauta <demosito@gmail.com> [Mon, 04 Aug 2014 18:51:18 +0400] rev 22064
i18n-ru: sync with ad56fc55cbc3 (fuzzies)
Fri, 01 Aug 2014 19:49:28 +0400 i18n-ru: sync with ad56fc55cbc3 (missing strings) stable
Alexander Sauta <demosito@gmail.com> [Fri, 01 Aug 2014 19:49:28 +0400] rev 22063
i18n-ru: sync with ad56fc55cbc3 (missing strings)
Wed, 30 Jul 2014 17:24:08 +0400 i18n-ru: update 'revisions' translation stable
Vladimir Zakharov <zakharov.vv@gmail.com> [Wed, 30 Jul 2014 17:24:08 +0400] rev 22062
i18n-ru: update 'revisions' translation
Tue, 29 Jul 2014 19:08:41 +0400 i18n-ru: update 'revsets' translation stable
Vladimir Zakharov <zakharov.vv@gmail.com> [Tue, 29 Jul 2014 19:08:41 +0400] rev 22061
i18n-ru: update 'revsets' translation
Wed, 16 Oct 2013 08:22:06 +0100 i18n-ru: prompts fixed stable
Alexander Sauta <demosito@gmail.com> [Wed, 16 Oct 2013 08:22:06 +0100] rev 22060
i18n-ru: prompts fixed
Thu, 07 Aug 2014 14:58:12 -0500 whitespace: nuke triple blank lines in **.py
Matt Mackall <mpm@selenic.com> [Thu, 07 Aug 2014 14:58:12 -0500] rev 22059
whitespace: nuke triple blank lines in **.py
Thu, 07 Aug 2014 14:57:20 -0500 check-commit: spot growing whitespace
Matt Mackall <mpm@selenic.com> [Thu, 07 Aug 2014 14:57:20 -0500] rev 22058
check-commit: spot growing whitespace We discourage PEP-8-style double blank lines, spot them creeping in.
Thu, 24 Jul 2014 15:06:08 -0400 strip: remove -b/--backup codepaths
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 24 Jul 2014 15:06:08 -0400] rev 22057
strip: remove -b/--backup codepaths cset ba3bc6474bbf has removed this option. This commit just tidies the code that was associated to it. It also fixes the internal calls to the strip() function. Before this change, any function that thought it would want as a final safety to keep a partial backup bundle (bundling changes not linearly related to the current change being stripped), had to explicitly pass a backup="strip" option. With this change, these backups are always kept in case of an exception and always removed if there is no exception. Only full backups can be specified with backup=True or no full backups with backup=False.
Thu, 07 Aug 2014 12:51:45 -0400 simplemerge: remove dead code
Jordi Gutiérrez Hermoso <jordigh@octave.org> [Thu, 07 Aug 2014 12:51:45 -0400] rev 22056
simplemerge: remove dead code The following functions in simplemerge are dead code. I reran "make test-merge*" after this change, and it passed. Looks like cruft that we've been carrying since we nabbed this code from bzr.
Tue, 17 Jun 2014 20:26:51 -0700 basectx: add missing, merge, and branch args to dirty method
Sean Farley <sean.michael.farley@gmail.com> [Tue, 17 Jun 2014 20:26:51 -0700] rev 22055
basectx: add missing, merge, and branch args to dirty method This fixes a discrepency for basectx and classes that inherit from it. Now callers can pass these arguments to any context without an exception being raised.
Fri, 25 Jul 2014 20:11:47 -0500 basefilectx: move isexec and islink from memfilectx
Sean Farley <sean.michael.farley@gmail.com> [Fri, 25 Jul 2014 20:11:47 -0500] rev 22054
basefilectx: move isexec and islink from memfilectx This will be used in the future for creating memctx objects from other store-type objects, such as a patch store or even another context.
Wed, 06 Aug 2014 12:16:58 -0500 tests: fix pyflakes test whitespace breakage
Matt Mackall <mpm@selenic.com> [Wed, 06 Aug 2014 12:16:58 -0500] rev 22053
tests: fix pyflakes test whitespace breakage
Wed, 06 Aug 2014 00:54:58 -0700 pushkey: wrap pushkey phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 06 Aug 2014 00:54:58 -0700] rev 22052
pushkey: wrap pushkey phase movement in a transaction Phases are not yet inside the transaction, but we need to prepare for it. So we wrap the phase movement inside a transaction.
Wed, 06 Aug 2014 00:54:15 -0700 push: wrap local phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 06 Aug 2014 00:54:15 -0700] rev 22051
push: wrap local phase movement in a transaction Phases are not yet inside the transaction, but we need to prepare for it. So we wrap the phase movement inside a transaction.
Wed, 06 Aug 2014 00:50:53 -0700 phase: wrap `hg phases` phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 06 Aug 2014 00:50:53 -0700] rev 22050
phase: wrap `hg phases` phase movement in a transaction Phases are not yet inside the transaction, but we need to prepare for it. So we wrap the phase movement inside a transaction.
Wed, 06 Aug 2014 00:50:07 -0700 mq: wrap qimport phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 06 Aug 2014 00:50:07 -0700] rev 22049
mq: wrap qimport phase movement in a transaction Phases are not yet inside the transaction, but we need to prepare for it. So we wrap the phase movement inside a transaction.
Wed, 06 Aug 2014 00:48:51 -0700 mq: wrap qfinish phase movement in a transaction
Pierre-Yves David <pierre-yves.david@fb.com> [Wed, 06 Aug 2014 00:48:51 -0700] rev 22048
mq: wrap qfinish phase movement in a transaction Phases are not yet inside the transaction, but we need to prepare for it. So we wrap the phase movement inside a transaction.
Wed, 06 Aug 2014 11:53:08 -0500 tests: change some #ifs to #requires
Matt Mackall <mpm@selenic.com> [Wed, 06 Aug 2014 11:53:08 -0500] rev 22047
tests: change some #ifs to #requires
Wed, 06 Aug 2014 11:43:59 -0500 tests: replace exit 80 with #require
Matt Mackall <mpm@selenic.com> [Wed, 06 Aug 2014 11:43:59 -0500] rev 22046
tests: replace exit 80 with #require
Wed, 06 Aug 2014 10:34:54 -0500 run-tests: add #require to abort full test
Matt Mackall <mpm@selenic.com> [Wed, 06 Aug 2014 10:34:54 -0500] rev 22045
run-tests: add #require to abort full test This allows nuking a bunch of ugly hghave || exit 80 lines.
Tue, 05 Aug 2014 21:17:11 -0400 run-tests: add support for xunit test reports
Augie Fackler <raf@durin42.com> [Tue, 05 Aug 2014 21:17:11 -0400] rev 22044
run-tests: add support for xunit test reports The Jenkins CI system understands xunit reports natively, so this will be helpful for anyone that wants to use Jenkins for testing hg or extensions that use run-tests.py for their testing.
Wed, 06 Aug 2014 02:45:55 -0500 contrib: add check-commit hook script to sanity-check commits
Matt Mackall <mpm@selenic.com> [Wed, 06 Aug 2014 02:45:55 -0500] rev 22043
contrib: add check-commit hook script to sanity-check commits
Tue, 05 Aug 2014 13:51:13 -0700 shelve: use `targetphase` while unbundling
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 05 Aug 2014 13:51:13 -0700] rev 22042
shelve: use `targetphase` while unbundling This removes the last manual phase movement in shelve.
Tue, 05 Aug 2014 13:49:38 -0700 changegroup: add a `targetphase` argument to `addchangegroup`
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 05 Aug 2014 13:49:38 -0700] rev 22041
changegroup: add a `targetphase` argument to `addchangegroup` This argument controls the phase used for the added changesets. This can be useful to unbundle in "secret" phase as required by shelve. This change aims at helping high-level code get rid of manual phase movement. An important milestone for having phases part of the transaction.
Tue, 05 Aug 2014 14:37:45 -0700 shelve: do not retract phase boundary by hand
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 05 Aug 2014 14:37:45 -0700] rev 22040
shelve: do not retract phase boundary by hand We rely on the internal mechanism to commit the changeset in the right state. This is similar to what the mq extension is doing. This is an important change as we plan to move phase movement with the transaction. Avoiding phase movement from high level code will avoid them the burden of transaction handling. It is also important to limit the need for transaction handling as this limits the odds of people messing up. Most common expected mess-up is to use a different transaction for changesets creation and phase adjustment.
Tue, 05 Aug 2014 18:53:05 -0700 commit: update the --secret code to use backupconfig and restoreconfig
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 05 Aug 2014 18:53:05 -0700] rev 22039
commit: update the --secret code to use backupconfig and restoreconfig Those dedicated methods also preserve all associated data (eg: sources, lack of value).
Tue, 05 Aug 2014 13:22:44 -0700 rebase: do not retract phase boundary by hand
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 05 Aug 2014 13:22:44 -0700] rev 22038
rebase: do not retract phase boundary by hand We rely on the internal mechanism to commit the changeset in the right phase. This similar to what the mq extension is doing. This is an important change as we plan to includes phase movement within the transaction. Avoiding phase movement from high-level code will avoid the burden of transaction handling. It is also important to limit the need for transaction handling as this limits the odds of people messing up. Most common expected mess-up is code using a different transaction for changeset creation and phase adjustment.
Tue, 05 Aug 2014 21:16:24 -0700 config: fix restoreconfig of non existing config
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 05 Aug 2014 21:16:24 -0700] rev 22037
config: fix restoreconfig of non existing config When the section, but no value existed, the `del` call raised a key error.
Thu, 31 Jul 2014 13:51:17 -0700 push: use stepsdone for obsmarkers push
Pierre-Yves David <pierre-yves.david@fb.com> [Thu, 31 Jul 2014 13:51:17 -0700] rev 22036
push: use stepsdone for obsmarkers push We do not have infrastructure to include obsolescence markers in the bundle2 push from core. But extensions may so we make sure it would not be sent twice.
Sat, 05 Jul 2014 19:32:20 +0200 push: introduce a discovery step for obsmarker
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 05 Jul 2014 19:32:20 +0200] rev 22035
push: introduce a discovery step for obsmarker The discovery step is still not doing anything smart. But this will allow extension to wrap it.
Sat, 05 Jul 2014 19:17:09 +0200 push: move the list of obsmarker to push into the push operation
Pierre-Yves David <pierre-yves.david@fb.com> [Sat, 05 Jul 2014 19:17:09 +0200] rev 22034
push: move the list of obsmarker to push into the push operation The list is now carried in the push operation, this will let extensions override it.
Fri, 04 Jul 2014 19:31:49 +0200 push: explicitly encode a list of obsmarkers to push
Pierre-Yves David <pierre-yves.david@fb.com> [Fri, 04 Jul 2014 19:31:49 +0200] rev 22033
push: explicitly encode a list of obsmarkers to push Sending obsmarkers through pushkey requires extra encoding (since pushkey can't take binary content) and slicing (since we can hit http header limit). As we send all obsolescences markers that exists in the repo for each push, we used to just look at the content of the "obsolete" pushkey namespace (already encoded and sliced) and send its content. However, future changeset will make it possible to push only parts of the obsmarkers. To prepare this we now explicitly encode a list of markers. The list of markers is still "all of them" but future changeset will takes care of that. The new code uses a "_protected" method but that seems reasonable to keep it private as this is the is the only external user of it and this whole pushing obsmarker through pushkey things in fairly hacky already)
Mon, 04 Aug 2014 16:32:41 -0700 merge-tools: add a `premerge=keep-merge3` config option
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 04 Aug 2014 16:32:41 -0700] rev 22032
merge-tools: add a `premerge=keep-merge3` config option This value leaves premerge markers that includes the merge base too. This is a the same as what `internal:merge3` would do.
Mon, 04 Aug 2014 16:58:39 -0700 merge-tools: make premerge valid values extensible
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 04 Aug 2014 16:58:39 -0700] rev 22031
merge-tools: make premerge valid values extensible We want to introduce a version leaving merge3 style markers.
Mon, 04 Aug 2014 16:50:15 -0700 mergetools: add a test for premerge --keep
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 04 Aug 2014 16:50:15 -0700] rev 22030
mergetools: add a test for premerge --keep It works! No surprise.
Mon, 04 Aug 2014 16:39:47 -0700 test-merge-tools: introduce a "revision 4" that merges with conflict
Pierre-Yves David <pierre-yves.david@fb.com> [Mon, 04 Aug 2014 16:39:47 -0700] rev 22029
test-merge-tools: introduce a "revision 4" that merges with conflict We need conflicts to test the premerge=keep configuration.
Tue, 05 Aug 2014 14:58:45 -0700 merge: add an internal:merge3 tool
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 05 Aug 2014 14:58:45 -0700] rev 22028
merge: add an internal:merge3 tool This variant gives access to a feature already present in ``internal:merge``: displaying merge base content. In the basic merge (calling ``hg merge``) case, including more context to the merge markers is an interesting addition. But this extra information is the only viable option in case conflict from grafting (, rebase, etc…). When grafting ``source`` on ``destination``, the parent of ``source`` is used as the ``base``. When all three changesets add content in the same location, the marker for ``source`` will contains both ``base`` and ``source`` content. Without the content of base exposed, there is no way for the user to discriminate content coming from ``base`` and content commit from ``source``. Practical example (all addition are in the same place): * ``destination`` adds ``Dest-Content`` * ``base`` adds ``Base-Content`` * ``source`` adds ``Src-Content`` Grafting ``source`` on ``destination`` will produce the following conflict: <<<<<<< destination Dest-Content ======= Base-Content Src-Content >>>>>>> source This that case there is no way to distinct ``base`` from ``source``. As a result content from ``base`` are likely to slip in the resolution result. However, adding the base make the situation very clear: <<<<<<< destination Dest-Content ||||||| base Base-Content ======= base Base-Content Src-Content >>>>>>> source Once the base is added, the addition from the grafted changeset is made clear. User can compare the content from ``base`` and ``source`` to make an enlightened decision during merge resolution.
Tue, 05 Aug 2014 15:09:54 -0700 internal:merge: update documentation
Pierre-Yves David <pierre-yves.david@fb.com> [Tue, 05 Aug 2014 15:09:54 -0700] rev 22027
internal:merge: update documentation Highlight the fact there are two regions in the markers and what their contents are. This prepares for the arrival of merge3.
(0) -10000 -3000 -1000 -240 +240 +1000 +3000 +10000 tip