Mon, 27 Mar 2017 16:00:47 +0200 tags: deprecated 'repo.tag'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 27 Mar 2017 16:00:47 +0200] rev 31677
tags: deprecated 'repo.tag' All user are gone. We can now celebrate the removal of some extra line from the 'localrepo' class.
Mon, 27 Mar 2017 18:08:05 +0200 drawdag: use 'tagsmod.tag' instead of 'repo.tag'
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 27 Mar 2017 18:08:05 +0200] rev 31676
drawdag: use 'tagsmod.tag' instead of 'repo.tag' The former is about to be deprecated.
Mon, 27 Mar 2017 16:00:34 +0200 tags: use the 'tag' function from the 'tags' module in the 'tag' command
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 27 Mar 2017 16:00:34 +0200] rev 31675
tags: use the 'tag' function from the 'tags' module in the 'tag' command There is No need to go through the 'repo' object method anymore.
Mon, 27 Mar 2017 15:58:31 +0200 tags: move 'repo.tag' in the 'tags' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 27 Mar 2017 15:58:31 +0200] rev 31674
tags: move 'repo.tag' in the 'tags' module Similar logic, pretty much nobody use this method (that creates a tag) so we move it into the 'tags' module were it belong.
Mon, 27 Mar 2017 15:55:07 +0200 tags: move '_tags' from 'repo' to 'tags' module
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Mon, 27 Mar 2017 15:55:07 +0200] rev 31673
tags: move '_tags' from 'repo' to 'tags' module As far as I understand, that function do not needs to be on the local repository class, so we extract it in the 'tags' module were it will be nice and comfortable. We keep the '_' in the name since its only user will follow in the next changeset.
Mon, 13 Mar 2017 15:17:20 +0100 hgweb: filter diff hunks when 'linerange' and 'patch' are specified in filelog
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 13 Mar 2017 15:17:20 +0100] rev 31672
hgweb: filter diff hunks when 'linerange' and 'patch' are specified in filelog
Mon, 13 Mar 2017 15:15:49 +0100 hgweb: add a 'linerange' parameter to webutil.diffs()
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 13 Mar 2017 15:15:49 +0100] rev 31671
hgweb: add a 'linerange' parameter to webutil.diffs() This is used to filter out hunks based on their range (with respect to 'node2' for patch.diffhunks() call, i.e. 'ctx' for webutil.diffs()). This is the simplest way to filter diff hunks, here done on server side. Later on, it might be interesting to perform this filtering on client side and expose a "toggle" action to alternate between full and filtered diff.
Thu, 19 Jan 2017 17:41:00 +0100 hgweb: handle a "linerange" request parameter in filelog command
Denis Laxalde <denis.laxalde@logilab.fr> [Thu, 19 Jan 2017 17:41:00 +0100] rev 31670
hgweb: handle a "linerange" request parameter in filelog command We now handle a "linerange" URL query parameter to filter filelog using a logic similar to followlines() revset. The URL syntax is: log/<rev>/<file>?linerange=<fromline>:<toline> As a result, filelog entries only consists of revision changing specified line range. The linerange information is propagated to "more"/"less" navigation links but not to numeric navigation links as this would apparently require a dedicated "revnav" class. Only update the "paper" template in this patch.
Sun, 26 Mar 2017 16:51:19 -0700 shelve: add logic to preserve active bookmarks
Kostia Balytskyi <ikostia@fb.com> [Sun, 26 Mar 2017 16:51:19 -0700] rev 31669
shelve: add logic to preserve active bookmarks This adds an explicit active-bookmark-handling logic to shelve. Traditional shelve handles it by transaction aborts, but it is a bit ugly and having an explicit functionality seems better.
Sun, 26 Mar 2017 12:26:35 -0700 metadataonlyctx: speed up sanity check
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 12:26:35 -0700] rev 31668
metadataonlyctx: speed up sanity check Previously the sanity check will construct manifestctx for both p1 and p2. But it only needs the "manifest node" information, which could be read from changelog directly.
Fri, 24 Feb 2017 18:39:08 +0100 revset: factor out linerange processing into a utility function
Denis Laxalde <denis.laxalde@logilab.fr> [Fri, 24 Feb 2017 18:39:08 +0100] rev 31667
revset: factor out linerange processing into a utility function Similar processing will be done in hgweb.webutil in forthcoming changeset.
Mon, 13 Mar 2017 10:41:13 +0100 hgweb: add a "patch" query parameter to filelog command
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 13 Mar 2017 10:41:13 +0100] rev 31666
hgweb: add a "patch" query parameter to filelog command Add support for a "patch" query parameter in filelog web command similar to --patch option of `hg log` to display the diff of each changeset in the table of revisions. The diff text is displayed in a dedicated row of the table that follows the existing one for each entry and spans over all columns. Only update "paper" template in this patch.
Mon, 13 Mar 2017 10:40:19 +0100 hgweb: handle "parity" internally in webutil.diffs()
Denis Laxalde <denis.laxalde@logilab.fr> [Mon, 13 Mar 2017 10:40:19 +0100] rev 31665
hgweb: handle "parity" internally in webutil.diffs() There's apparently no reason to have the "parity" of diff blocks that webutil.diffs() generates coming from outside the function. So have it internally managed. We thus now pass a "web" object to webutil.diffs() to get access to both "repo" and "stripecount" attribute.
Mon, 27 Mar 2017 09:44:36 +0900 largefiles: add lfile argument to updatestandin() for efficiency (API)
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:36 +0900] rev 31664
largefiles: add lfile argument to updatestandin() for efficiency (API) Before this patch, updatestandin() takes "standin" argument, and applies splitstandin() on it to pick out a path to largefile (aka "lfile" or so) from standin. But in fact, all callers already knows "lfile". In addition to it, many callers knows both "standin" and "lfile". Therefore, making updatestandin() take only one of "standin" or "lfile" is inefficient.
Mon, 27 Mar 2017 09:44:36 +0900 largefiles: use strip() instead of slicing to get rid of EOL of standin
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:36 +0900] rev 31663
largefiles: use strip() instead of slicing to get rid of EOL of standin This slicing prevents from replacing SHA-1 by another (= longer hash value) in the future.
Mon, 27 Mar 2017 09:44:36 +0900 largefiles: rename local variable appropriately
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:36 +0900] rev 31662
largefiles: rename local variable appropriately repo['.'] is called not as "working context" but as "parent context". In this code path, hash value of current content of file should be compared against hash value recorded in "parent context". Therefore, "wctx" may cause misunderstanding in this case.
Mon, 27 Mar 2017 09:44:35 +0900 largefiles: avoid redundant loop to eliminate None from list
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:35 +0900] rev 31661
largefiles: avoid redundant loop to eliminate None from list Before this patch, this code path contains two loops for m._files: one for replacement with standin, and another for elimination of None, which comes from previous replacement ("standin in wctx or lfdirstate[f] == 'r'" case in tostandin()). These two loops can be unified into simple one "for" loop.
Mon, 27 Mar 2017 09:44:35 +0900 largefiles: avoid meaningless changectx looking up
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:35 +0900] rev 31660
largefiles: avoid meaningless changectx looking up Logically, "repo[ctx.node()]" should be equal to "ctx". In addition to it, this redundant code path is repeated "len(match.m_files)" times.
Mon, 27 Mar 2017 09:44:35 +0900 largefiles: avoid redundant changectx looking up at each repetitions
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:35 +0900] rev 31659
largefiles: avoid redundant changectx looking up at each repetitions These code paths look up changectx at each repetitions, even though the changectx key isn't changed while loop.
Mon, 27 Mar 2017 09:44:34 +0900 largefiles: omit updating newly added standin at linear merging
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:34 +0900] rev 31658
largefiles: omit updating newly added standin at linear merging Updating standin for newly added largefile is needed, only if same name largefile exists in destination context at linear merging. In such case, updated standin is used to detect divergence of largefile at overridefilemerge(). Otherwise, standin doesn't have any responsibility for its content (usually, it is empty).
Mon, 27 Mar 2017 09:44:34 +0900 largefiles: reuse hexsha1() to centralize hash calculation logic into it
FUJIWARA Katsunori <foozy@lares.dti.ne.jp> [Mon, 27 Mar 2017 09:44:34 +0900] rev 31657
largefiles: reuse hexsha1() to centralize hash calculation logic into it This patch also renames argument of hexsha1(), not only for readability ("data" isn't good name for file-like object), but also for reviewability (including hexsha1() code helps reviewers to confirm how these functions are similar). BTW, copyandhash() has also similar logic, but it can't reuse hexsha1(), because it writes read-in data into specified fileobj simultaneously.
Sun, 26 Mar 2017 19:11:41 +0900 py3: prove second commit works
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 19:11:41 +0900] rev 31656
py3: prove second commit works Finally it works.
Sun, 26 Mar 2017 19:06:48 +0900 py3: fix manifestdict.fastdelta() to be compatible with memoryview
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 19:06:48 +0900] rev 31655
py3: fix manifestdict.fastdelta() to be compatible with memoryview This doesn't look nice, but a straightforward way to support Python 3. bytes(m[start:end]) is needed because a memoryview doesn't support ordering operations. On Python 2, m[start:end] returns a bytes object even if m is a buffer, so calling bytes() should involve no additional copy. I'm tired of trying cleaner alternatives, including: a. extend memoryview to be compatible with buffer type => memoryview is not an acceptable base type b. wrap memoryview by buffer-like class => zlib complains it isn't bytes-like
Sun, 26 Mar 2017 17:00:23 -0700 crecord: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 17:00:23 -0700] rev 31654
crecord: use ProgrammingError
Sun, 26 Mar 2017 16:59:30 -0700 transaction: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 16:59:30 -0700] rev 31653
transaction: use ProgrammingError
Sun, 26 Mar 2017 16:57:25 -0700 bundle2: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 16:57:25 -0700] rev 31652
bundle2: use ProgrammingError
Sun, 26 Mar 2017 16:55:56 -0700 merge: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 16:55:56 -0700] rev 31651
merge: use ProgrammingError
Sun, 26 Mar 2017 16:53:28 -0700 repair: use ProgrammingError
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 16:53:28 -0700] rev 31650
repair: use ProgrammingError
Sun, 26 Mar 2017 16:33:12 +0900 py3: abuse r'' to preserve str-ness of literals passed to __setattr__()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 16:33:12 +0900] rev 31649
py3: abuse r'' to preserve str-ness of literals passed to __setattr__()
Sun, 26 Mar 2017 17:12:06 +0900 py3: fix slicing of byte string in revlog.compress()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 17:12:06 +0900] rev 31648
py3: fix slicing of byte string in revlog.compress() I tried .startswith('\0'), but data wasn't always a bytes nor a bytearray.
Sun, 26 Mar 2017 16:31:01 +0900 py3: use bytes() to cast to immutable bytes in changelog.appender.write()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 16:31:01 +0900] rev 31647
py3: use bytes() to cast to immutable bytes in changelog.appender.write()
Sun, 26 Mar 2017 16:16:45 +0900 py3: use bytes() to cast to immutable bytes in pure.bdiff.bdiff()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 16:16:45 +0900] rev 31646
py3: use bytes() to cast to immutable bytes in pure.bdiff.bdiff()
Sun, 26 Mar 2017 16:14:04 +0900 bdiff: drop support for array.array argument from pure.bdiff.bdiff()
Yuya Nishihara <yuya@tcha.org> [Sun, 26 Mar 2017 16:14:04 +0900] rev 31645
bdiff: drop support for array.array argument from pure.bdiff.bdiff() Thanks to 2a18e9e6ca43, we no longer pass array.array('c') object to bdiff().
Sun, 26 Mar 2017 15:55:34 +0200 histedit: test that an aborted histedit can be rerun (with obsolete)
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 26 Mar 2017 15:55:34 +0200] rev 31644
histedit: test that an aborted histedit can be rerun (with obsolete) In the future, this should help catching issue as the one introduced in 6f0b7475cf9a.
Sun, 26 Mar 2017 15:46:09 +0200 histedit: backout changeset 6f0b7475cf9a
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 26 Mar 2017 15:46:09 +0200] rev 31643
histedit: backout changeset 6f0b7475cf9a Before 6f0b7475cf9a, histedit (like rebase) was only creating markers on final success from the old-rewritten node to the newly created nodes (as of before 6f0b7475cf9a). In case of abort the aborted attempt were stripped to restore the repository in its state prior to the attempt. This use of strip was on purpose. Using markers in this case introduces various issues. The main one is that keeping the partial result of histedit as obsolete prevents us to recreates the same nodes in a second attempt. The same operation will lead to an identical results, using an identical node that already exists in the repository as obsolete. To conclude, we cannot and should not switch to obsolescence markers creation on histedit --abort and we backout 6f0b7475cf9a. A test to catch this class of issue will be introduced in the next changeset.
Sun, 26 Mar 2017 15:34:39 +0200 histedit: backout changeset 2b599f5468a4
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Sun, 26 Mar 2017 15:34:39 +0200] rev 31642
histedit: backout changeset 2b599f5468a4 Its parent is about to be backedout so this one needs to be removed too.
Sun, 26 Mar 2017 16:48:29 -0400 revsetlang: fix _quote on int on python3
Augie Fackler <raf@durin42.com> [Sun, 26 Mar 2017 16:48:29 -0400] rev 31641
revsetlang: fix _quote on int on python3 Thanks to Yuya for spotting the need.
Sun, 26 Mar 2017 20:58:54 -0700 runtests: unset editor and pager related environment variables
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 20:58:54 -0700] rev 31640
runtests: unset editor and pager related environment variables Those environment variables could affect some configuration and future tests. Drop them to avoid issues.
Sun, 26 Mar 2017 17:59:33 -0700 debugfsinfo: improve case-sensitive testing
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 17:59:33 -0700] rev 31639
debugfsinfo: improve case-sensitive testing Previously the case-sensitive test was for the current directory, and is fragile with errors, and could remove a real file called ".debugfsinfo". This patch improves the case-sensitive testing so it test the given path using a unique temporary file, and does not crash on errors.
Sun, 26 Mar 2017 17:29:37 -0700 debugfsinfo: show fstype for given path
Jun Wu <quark@fb.com> [Sun, 26 Mar 2017 17:29:37 -0700] rev 31638
debugfsinfo: show fstype for given path
Sun, 26 Mar 2017 21:10:25 +0530 test-check-py3-commands: cleanup tests related to `hg status`
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 26 Mar 2017 21:10:25 +0530] rev 31637
test-check-py3-commands: cleanup tests related to `hg status` We were testing hg status on Python 3 at two places in the test. Cleaned up one of them.
Sun, 26 Mar 2017 20:58:21 +0530 diff: use pycompat.{byteskwargs, strkwargs} to switch opts b/w bytes and str
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 26 Mar 2017 20:58:21 +0530] rev 31636
diff: use pycompat.{byteskwargs, strkwargs} to switch opts b/w bytes and str
Sun, 26 Mar 2017 20:54:50 +0530 patch: make regular expressions bytes by adding b''
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 26 Mar 2017 20:54:50 +0530] rev 31635
patch: make regular expressions bytes by adding b''
Sun, 26 Mar 2017 20:49:18 +0530 dispatch: use pycompat.maplist() instead of map() to get a list
Pulkit Goyal <7895pulkit@gmail.com> [Sun, 26 Mar 2017 20:49:18 +0530] rev 31634
dispatch: use pycompat.maplist() instead of map() to get a list
Sat, 25 Mar 2017 13:29:23 -0400 color: fix grammar in help text
Matt Harbison <matt_harbison@yahoo.com> [Sat, 25 Mar 2017 13:29:23 -0400] rev 31633
color: fix grammar in help text
Sat, 25 Mar 2017 12:58:55 -0700 statfs: detect more filesystems on Linux
Jun Wu <quark@fb.com> [Sat, 25 Mar 2017 12:58:55 -0700] rev 31632
statfs: detect more filesystems on Linux Previously, the code only has what manpager says. In <linux/magic.h>, there are more defined. This patch adds filesystems that appear in the current Arch Linux's /proc/filesystems (autofs, overlay, securityfs) and f2fs, which was seen in news.
Thu, 23 Mar 2017 23:47:23 -0400 repair: use context manager for lock management
Matt Harbison <matt_harbison@yahoo.com> [Thu, 23 Mar 2017 23:47:23 -0400] rev 31631
repair: use context manager for lock management If repo.lock() raised inside of the try block, 'tr' would have been None in the finally block where it tries to release(). Modernize the syntax instead of just winching the lock out of the try block. I found several other instances of acquiring the lock inside of the 'try', but those finally blocks handle None references. I also started switching some trivial try/finally blocks to context managers, but didn't get them all because indenting over 3x for lock, wlock and transaction would have spilled over 80 characters. That got me wondering if there should be a repo.rwlock(), to handle locking and unlocking in the proper order. It also looks like py27 supports supports multiple context managers for a single 'with' statement. Should I hold off on the rest until py26 is dropped?
Fri, 24 Mar 2017 19:52:43 -0700 gitweb: use monospace font for commit messages
Gregory Szorc <gregory.szorc@gmail.com> [Fri, 24 Mar 2017 19:52:43 -0700] rev 31630
gitweb: use monospace font for commit messages Commit messages often contain vertically aligned text. The default paper style already uses monospace fonts for rendering commit messages. And, AFAICT, a number of Git servers also render commit messages with monospace. It seems like the reasonable thing to do. This commit converts all instances of the full commit message in the gitweb style to render with monospace.
(0) -30000 -10000 -3000 -1000 -300 -100 -48 +48 +100 +300 +1000 +3000 +10000 tip