- May 13, 2013
-
-
Matt Mackall authored
-
Matt Mackall authored
-
- May 10, 2013
-
-
Wagner Bruna authored
-
Matt Mackall authored
-
- May 12, 2013
-
-
Mike Williams authored
Before this patch the only place that documented the use of a different registry key was on the wiki page for installing on Windows from sources, while most users will use a pre-packaged installer and the supplied help files. This patch documents in the supplied help files that an alternate registry key is used for the installation/system configuration file when using 32-bit Python on a 64-bit Windows.
-
- May 07, 2013
-
-
Yuya Nishihara authored
Because dirstate._branch() strips leading/trailing spaces from .hg/branch, "hg branch ' foo '" should abort if branch "foo" exists in another head. tag command had a similar bug and fixed by 3d0a9c8d7184.
-
- May 09, 2013
-
-
Alexander Plavin authored
Repeated newlines were stripped by pygmentize, now give the option not to do so.
-
Matt Mackall authored
-
Matt Mackall authored
-
Matt Mackall authored
-
Takumi IINO authored
-
- May 06, 2013
-
-
Katsunori FUJIWARA authored
Before this patch, largefiles extension checks unknown files in the working directory always case sensitively. This causes failure in updating from the revision X consisting of '.hglf/A' (and "A" implicitly) to the revision Y consisting of 'a' (not ".hglf/A") on case insensitive filesystem, because "A" in the working directory is treated as colliding against and different from 'a' on the revision Y. This patch uses "repo.dirstate.normalize()" to check unknown files with case awareness of the filesystem.
-
Katsunori FUJIWARA authored
Before this patch, largefiles extension always unlinks largefiles untracked on the target context in merging/updating after updating working directory. For example, it is assumed that the revision X consists of ".hglf/A" (and "A" implicitly) and revision Y consists of "a" (not ".hglf/A"). In the case of updating from X to Y, largefiles extension tries to unlink "A" after updating "a" in working directory. This causes unexpected unlinking "a" on the case insensitive filesystem. This patch checks existence of the file in the working context with case awareness of the filesystem to prevent from such unexpected unlinking. "lfcommands._updatelfile()" also unlinks target file in the case "largefile is tracked in the target context, but fails to be fetched". This patch doesn't apply "repo.dirstate.normalize()" in this case, because it should be already ensured in the manifest merging that there is no normal file colliding against any largefiles.
-
Katsunori FUJIWARA authored
Creation and writing into target file via vfs (a.k.a opener) is done after "unlink()" target file, if it exists. For example, it is assumed that the revision X consists of file 'A', and the revision Y consists of file 'A/B'. Merging revision X into Y tries to "unlink()" on directory 'A' of 'A/B', before creation of file 'A'. On POSIX environment, directories should be removed by "rmdir(2)", and "unlink(2)" on directories fails. "unlink()" of Mercurial (and Python) uses "unlink(2)" directly, so unlinking in the merge case above would fail. In the other hand, on Windows environment, "unlink()" of Mercurial tries to rename before actual unlinking, to follow POSIX semantics: already opened file can be unlinked safely. This causes unexpected success in unlinking in the merge case above, even though directory 'A' is renamed to another. This confuses users. This patch checks whether target is directory or not before renaming, and raises IOError(errno.EPERM) if so, to follow POSIX semantics.
-
- May 09, 2013
-
-
Katsunori FUJIWARA authored
Before this patch, "subrepo._calcfilehash()" opens files by "open()" without any mode specification. This implies "text mode" on Windows. When target file contains '\x00' byte, "read()" in "text mode" reads file contents in without data after '\x00'. This causes invalid SHA1 hash calculation in "subrepo._calcfilehash()". This patch opens files in 'rb' mode to read exact data in.
-
- May 03, 2013
-
-
Blesso hrvoje1212 authored
The cvsps.py:getrepopath suffers from a string parsing bug (it returns "user@server/path/to/repository" if the CVSROOT is given like this: ":pserver:user@server/path/to/repository" ), which gives returnes the wrong value becouse cvsps.py fails to strip the prefix from filenames. With this patch for the same input we get the correct repo path that is: "/path/to/repository"
-
- May 04, 2013
-
-
Matt Mackall authored
The original code was a bit too clever and got confused by some cp949 Korean text. This rewrite bytes the bullet and manually decodes UTF-8 sequences. Adds some doctests.
-
- May 03, 2013
-
-
Bryan O'Sullivan authored
Previously, we restored the states of files, but not the additional information the dirstate uses to track copies and renames.
-
Durham Goode authored
If a directory matched a regex in hgignore but the files inside the directory did not match the regex, they would appear as deleted in hg status. This change fixes them to appear normally in hg status. Removing the ignore(nf) conditional here is ok because it just means we might stat more files than we had before. My testing on a large repo shows this causes no performance regression since the only additional files being stat'd are the ones that are missing (i.e. status=!), which are generally rare.
-
- May 02, 2013
-
-
Brendan Cully authored
-
Brendan Cully authored
-
- May 01, 2013
-
-
Matt Mackall authored
-
Matt Mackall authored
-
Sean Farley authored
If the current revision was the target revision of -r, then the bookmark would be active. Test cases have been updated accordingly.
-
Sean Farley authored
This patch resolves a single divergent bookmark if a divergent bookmark exists in the target revision and it current bookmark is not an ancestor of the target revision, else it would already be handled by the previous patch in this series. Test coverage is added.
-
Sean Farley authored
This patch resolves divergent bookmarks between the current active bookmark MARK and the new destination. This situation can arise when pulling new changesets, abandoning your current changesets actively bookmarked with MARK via strip, and then doing a bare update. The non-divergent but active bookmark MARK is then moved to a common ancestor of the new changesets and the abandoned changesets. Test coverage is added.
-
Sean Farley authored
This patch is a follow-up to 56dd55da2f7d that resolves divergent bookmarks between the to-be-forwarded bookmark MARK and the new descendant. This situation can happen when pulling new changesets, updating to the divergent bookmark, abandoning the previous changesets with strip, and then moving MARK to MARK@N. Test coverage is added.
-
- Apr 30, 2013
-
-
Katsunori FUJIWARA authored
Before this patch, tag type information is always updated, even if tag previously read in has higher priority than one newly read in. This causes that the tag type is displayed as "local", even if global tag overwrites existing local one successfully. This patch updates tag type only if tag node is updated. This patch tests overwriting local tags below: - visible one (normal case) - already removed one (recorded as null)
-
- Apr 29, 2013
-
-
Mads Kiilerich authored
The fall-back root for walking is the repo root, not no root. The "roots" do however also end up in m.files() which is used in various ways, for instance to indicate whether matches are exact. The change could thus have other impacts.
-
Katsunori FUJIWARA authored
This patch adds steps to test case-folding collision detection on the revision tree built up in the order different from the one reproducing issue3452. This may prevent regression by changes around "copy detection" and/or "case-folding collision detection" logic in the future.
-
Katsunori FUJIWARA authored
Before this patch, case-folding collision detection uses "copies.pathcopies()" before "manifestmerge()", and is not aware of renaming in some cases. For example, in the case of issue3452, "copies.pathcopies()" can't detect renaming, if the file is renamed at the revision before common ancestor of merging. So, "hg merge" is aborted unexpectedly on case insensitive filesystem. This patch fully rewrites case-folding collision detection, and relocate it into "manifestmerge()". New implementation uses list of actions held in "actions" and "prompts" to build provisional merged manifest up. Provisional merged manifest should be correct, if actions required to build merge result up in working directory are listed up in "actions" and "prompts" correctly. This patch checks case-folding collision still before prompting for merge, to avoid aborting after some interactions with users. So, this assumes that user would choose not "deleted" but "changed". This patch also changes existing abort message, because sorting before collision detection changes order of checked files.
-
Katsunori FUJIWARA authored
This patch refactors "test-casecollision-merge.t" to increase reusability in succeeding patches. It is confirmed that changed test also can detect issue3370.
-
Katsunori FUJIWARA authored
Before this patch, all files in dirstate are used to build "_foldmap" up on case insensitive filesystem regardless of their statuses. For example, when dirstate contains both removed file 'a' and added file 'A', "_foldmap" may be updated finally by removed file 'a'. This causes unexpected status information for added file 'A' at "hg status" invocation. This patch ignores removed files at building "_foldmap" up on case insensitive filessytem. This patch doesn't add any test, because this issue is difficult to reproduce intentionally: it depends on iteration order of "dirstate._map".
-
- May 01, 2013
-
-
Wagner Bruna authored
-
Wagner Bruna authored
-
- Apr 30, 2013
-
-
Katsunori FUJIWARA authored
-
- Apr 29, 2013
-
-
Bryan O'Sullivan authored
This fixes a very confusing error message: $ hg --config=pager.enabled=off st abort: option --config may not be abbreviated!
-
Bryan O'Sullivan authored
-
- Apr 30, 2013
-
-
Pierre-Yves David authored
Having the permission to lock the source repo on push is now optional. When the repo cannot be locked, phase are not changed locally. A status message is issue when some actual phase movement are skipped: cannot lock source repo, skipping local public phase update A debug message with the exact reason of the locking failure is issued in all case.
-
Pierre-Yves David authored
Having all phases movement centralised will help to handle special case when the local repo can not be locked as describe in issue 3684.
-