- Aug 14, 2014
-
-
Pierre-Yves David authored
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.
-
Pierre-Yves David authored
The function is now just passing the value to create markers.
-
Pierre-Yves David authored
Now that we have this new argument, we can just use it.
-
Pierre-Yves David authored
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.
-
Pierre-Yves David authored
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.
-
- Aug 15, 2014
-
-
Pierre-Yves David authored
We introduce a proper method to access the flag information.
-
Pierre-Yves David authored
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.
-
- Jun 24, 2014
-
-
Pierre-Yves David authored
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.
-
Pierre-Yves David authored
Now that a single call site remains, we can just inline its content.
-
Pierre-Yves David authored
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.
-
Pierre-Yves David authored
There cannot be any elements in this set since: dsmodified &= modified
-
Pierre-Yves David authored
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.
-
- Aug 02, 2014
-
-
Pierre-Yves David authored
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.
-
- Aug 15, 2014
-
-
Matt Mackall authored
-
Katsunori FUJIWARA authored
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.
-
Katsunori FUJIWARA authored
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.
-
Mads Kiilerich authored
This helps checker tools ... and readability for those who knows and follows the convention.
-
Mads Kiilerich authored
-
Mads Kiilerich authored
-
Mads Kiilerich authored
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.
-
Mads Kiilerich authored
This will mute some pyflakes "import ... shadowed by loop variable" warnings.
-
Mads Kiilerich authored
_ 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.
-
Mads Kiilerich authored
This will make sure we get import errors, even if demandimport is enabled. This will also mute some pyflakes 'imported but unused' warnings.
-
Katsunori FUJIWARA authored
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)
-
Katsunori FUJIWARA authored
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
-
Katsunori FUJIWARA authored
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".
-
Katsunori FUJIWARA authored
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.
-
Katsunori FUJIWARA authored
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.
-
Yuya Nishihara authored
-
Yuya Nishihara authored
-
- Jun 24, 2014
-
-
Pierre-Yves David authored
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.
-
Pierre-Yves David authored
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.
-
Pierre-Yves David authored
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.
-
- Aug 02, 2014
-
-
Pierre-Yves David authored
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.
-
- Jul 31, 2014
-
-
Pierre-Yves David authored
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.
-
- Aug 02, 2014
-
-
Pierre-Yves David authored
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.
-
- Aug 15, 2014
-
-
Matt Mackall authored
This prepares for upcoming revert changes.
-
Matt Mackall authored
-
Mads Kiilerich authored
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.
-
Mads Kiilerich authored
-