Fri, 21 Apr 2017 02:20:46 +0530 py3: convert opts to bytes in cmdutil.dorecord()
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 21 Apr 2017 02:20:46 +0530] rev 32193
py3: convert opts to bytes in cmdutil.dorecord() commands.commit() calls cmdutil.dorecord() where opts are passed as unicodes being keyword arguments. This patch converts them back to bytes as they are required.
Fri, 28 Apr 2017 00:49:30 +0530 py3: make sure opts are passed and used correctly in help command
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 28 Apr 2017 00:49:30 +0530] rev 32192
py3: make sure opts are passed and used correctly in help command opts are converted back to bytes in help.help_() where they are used. Before that it's ensured that we have a bytes value for keep variable.
Wed, 03 May 2017 15:25:06 +0530 py3: handle opts uniformly in commands.py
Pulkit Goyal <7895pulkit@gmail.com> [Wed, 03 May 2017 15:25:06 +0530] rev 32191
py3: handle opts uniformly in commands.py Since keyword arguments can't be bytes on Python 3, we converted then to unicodes before passing into different command functions. We need to adopt a certain pattern to convert opts back to bytes. Following are some of the functions which are called from inside these command functions and should always be feeded bytes to follow the right behaviour. ui.fomattter() scmutil.match() patch.diffallopts() hg.peer() cmdutil.{show_changeset|copy|graphrevs|checkunsupportedflag} server.{createservice|runservice} There are few commands which are left out where opts is again passed to a function as keyword arguments or converting opts back to bytes is kind of not necessary. Those are cat, revert, help, unbundle and rollback. Following patches will deal with them. This patch apart from these five commands, convert opts back to bytes for rest of the commands. This fixes a lot of things which are hidden like --git works now. Similarly more flags of commands which run on Python 3 currently get fixed.
Thu, 04 May 2017 00:26:55 -0400 merge with stable
Augie Fackler <augie@google.com> [Thu, 04 May 2017 00:26:55 -0400] rev 32190
merge with stable
Wed, 03 May 2017 18:04:43 -0700 webcommands: use fctx.isbinary
Jun Wu <quark@fb.com> [Wed, 03 May 2017 18:04:43 -0700] rev 32189
webcommands: use fctx.isbinary
Wed, 03 May 2017 18:03:38 -0700 annotate: use fctx.isbinary
Jun Wu <quark@fb.com> [Wed, 03 May 2017 18:03:38 -0700] rev 32188
annotate: use fctx.isbinary
Wed, 03 May 2017 18:02:00 -0700 fileset: use fctx.isbinary instead of util.binary(fctx.data())
Jun Wu <quark@fb.com> [Wed, 03 May 2017 18:02:00 -0700] rev 32187
fileset: use fctx.isbinary instead of util.binary(fctx.data()) filectx provides "isbinary" to test if the data is binary. Let's use it. This enables other filectx implementations (like LFS) to override the isbinary test.
Wed, 03 May 2017 14:07:14 -0700 internals: document that "branches" is a legacy wire command
Siddharth Agarwal <sid0@fb.com> [Wed, 03 May 2017 14:07:14 -0700] rev 32186
internals: document that "branches" is a legacy wire command Modern clients use a different discovery mechanism.
Wed, 03 May 2017 10:30:57 -0700 match: make subinclude construction lazy
Durham Goode <durham@fb.com> [Wed, 03 May 2017 10:30:57 -0700] rev 32185
match: make subinclude construction lazy The matcher subinclude functionality allows us to have .hgignore files that include subdirectory hgignore files. Today it parses the entire repo at once, even if we only need to test a file in one subdirectory. This patch makes the subinclude tree creation lazy, which speeds up matcher creation significantly in large repos with very large trees of ignore patterns.
Wed, 03 May 2017 09:09:44 -0700 bisect: allow resetting with unfinished graft/rebase/etc
Martin von Zweigbergk <martinvonz@google.com> [Wed, 03 May 2017 09:09:44 -0700] rev 32184
bisect: allow resetting with unfinished graft/rebase/etc "hg bisect --reset" just deletes the state file (it doesn't move back to the starting point like rebase does); it can not conflict with an ongoing rebase etc. checkunfinished() has this documentation: It's probably good to check this right before bailifchanged(). So that's where I moved it.
Fri, 21 Apr 2017 01:13:18 +0530 py3: use %d instead of %s for integers
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 21 Apr 2017 01:13:18 +0530] rev 32183
py3: use %d instead of %s for integers dispatch._runcatch() always returns an integer value.
Fri, 21 Apr 2017 00:53:38 +0530 py3: make posix.getuser return a bytes
Pulkit Goyal <7895pulkit@gmail.com> [Fri, 21 Apr 2017 00:53:38 +0530] rev 32182
py3: make posix.getuser return a bytes
Thu, 20 Apr 2017 19:57:16 +0530 py3: replace str with bytes in isinstance()
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 20 Apr 2017 19:57:16 +0530] rev 32181
py3: replace str with bytes in isinstance()
Thu, 27 Apr 2017 09:49:57 +0530 py3: use pycompat.bytestr() instead of str()
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 27 Apr 2017 09:49:57 +0530] rev 32180
py3: use pycompat.bytestr() instead of str() This is because str() on python 3 return unicodes
Thu, 20 Apr 2017 19:51:37 +0530 py3: alias long to int on Python 3
Pulkit Goyal <7895pulkit@gmail.com> [Thu, 20 Apr 2017 19:51:37 +0530] rev 32179
py3: alias long to int on Python 3
Wed, 03 May 2017 09:41:55 -0400 setup: sys.version_info always exists
Alex Gaynor <agaynor@mozilla.com> [Wed, 03 May 2017 09:41:55 -0400] rev 32178
setup: sys.version_info always exists It is documented as existing since Python 2.0, and empirically from other OSS projects I maintain, there is no problem relying on its existance.
Tue, 02 May 2017 22:39:14 -0700 filelog: fix parsemeta docstring
Jun Wu <quark@fb.com> [Tue, 02 May 2017 22:39:14 -0700] rev 32177
filelog: fix parsemeta docstring 75bb7c702317 changed the return type of filelog.parsemeta but forgot to update its docstring.
Tue, 02 May 2017 10:20:44 -0700 util: remove doc of long gone 'targetsize' argument
Martin von Zweigbergk <martinvonz@google.com> [Tue, 02 May 2017 10:20:44 -0700] rev 32176
util: remove doc of long gone 'targetsize' argument Gone since fa836e050c50 (chunkbuffer: removed unused method and arg, 2007-10-11).
Tue, 02 May 2017 02:05:39 +0200 cleanup: drop the deprecated 'localrepo._link' method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:05:39 +0200] rev 32175
cleanup: drop the deprecated 'localrepo._link' method This was deprecated in favor of 'localrepo.wvfs.islink'. We can now drop it for the future 4.3.
Tue, 02 May 2017 02:04:55 +0200 cleanup: drop the deprecated 'localrepo.wfile' method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:04:55 +0200] rev 32174
cleanup: drop the deprecated 'localrepo.wfile' method This was deprecated in favor of 'localrepo.wvfs.join'. We can now drop it for the future 4.3.
Tue, 02 May 2017 02:03:56 +0200 cleanup: drop the deprecated 'localrepo.join' method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:03:56 +0200] rev 32173
cleanup: drop the deprecated 'localrepo.join' method This was deprecated in favor of 'localrepo.vfs.join'. We can now drop it for the future 4.3.
Tue, 02 May 2017 02:03:04 +0200 cleanup: drop the deprecated 'localrepo.tag' method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:03:04 +0200] rev 32172
cleanup: drop the deprecated 'localrepo.tag' method This was deprecated in favor of 'mercurial.tags.tag'. We can now drop it for the future 4.3.
Tue, 02 May 2017 02:01:47 +0200 cleanup: drop the deprecated 'localrepo.opener' method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:01:47 +0200] rev 32171
cleanup: drop the deprecated 'localrepo.opener' method This was deprecated in favor of 'localrepo.vfs'. We can now drop it for the future 4.3.
Tue, 02 May 2017 02:01:15 +0200 cleanup: drop the deprecated 'localrepo.wopener' method
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 02:01:15 +0200] rev 32170
cleanup: drop the deprecated 'localrepo.wopener' method This was deprecated in favor of 'localrepo.wvfs'. We can now drop it for the future 4.3.
Tue, 02 May 2017 01:59:33 +0200 cleanup: drop vfs compatibility layer in scmutil
Pierre-Yves David <pierre-yves.david@ens-lyon.org> [Tue, 02 May 2017 01:59:33 +0200] rev 32169
cleanup: drop vfs compatibility layer in scmutil All these constructors are deprecated in 4.2. We can now drop them on the default branch (future 4.3).
Sat, 22 Apr 2017 17:13:05 -0700 test-worker: exercise more about "killworkers" situation
Jun Wu <quark@fb.com> [Sat, 22 Apr 2017 17:13:05 -0700] rev 32168
test-worker: exercise more about "killworkers" situation This patch adds some sleep and increases numcpus to exercise the "killworkers" situation. So race conditions could be discovered more easily, if someone changes worker.py incorrectly. Currently worker.py should be free of such issues.
Sat, 22 Apr 2017 17:00:50 -0700 test-worker: capture tracebacks more reliably
Jun Wu <quark@fb.com> [Sat, 22 Apr 2017 17:00:50 -0700] rev 32167
test-worker: capture tracebacks more reliably The traceback test may have traceback caused by SIGTERM. Instead of grepping "Traceback", explicitly grep the exception we care about. This makes the test less flaky.
Sat, 22 Apr 2017 16:50:08 -0700 worker: rewrite error handling so os._exit covers all cases
Jun Wu <quark@fb.com> [Sat, 22 Apr 2017 16:50:08 -0700] rev 32166
worker: rewrite error handling so os._exit covers all cases Previously the worker error handling is like: pid = os.fork() --+ if pid == 0: | .... | problematic .... --+ try: --+ .... | worker error handling --+ If a signal arrives when Python is executing the "problematic" lines, an external error handling (dispatch.py) will take over the control flow and it's no longer guaranteed "os._exit" is called (see 86cd09bc13ba for why it is necessary). This patch rewrites the error handling so it covers all possible code paths for a worker even during fork. Note: "os.getpid() == parentpid" is used to test if the process is parent or not intentionally, instead of checking "pid", because "pid = os.fork()" may be not atomic - it's possible that that a signal hits the worker before the assignment completes [1]. The newly added test replaces "os.fork" to exercise that extreme case. [1]: CPython compiles "pid = os.fork()" to 2 byte codes: "CALL_FUNCTION" and "STORE_FAST", so it's probably not atomic: def f(): pid = os.fork() dis.dis(f) 2 0 LOAD_GLOBAL 0 (os) 3 LOAD_ATTR 1 (fork) 6 CALL_FUNCTION 0 9 STORE_FAST 0 (pid) 12 LOAD_CONST 0 (None) 15 RETURN_VALUE
Sat, 22 Apr 2017 15:00:17 -0700 dispatch: take over SignalInterrupt handling from scmutil
Jun Wu <quark@fb.com> [Sat, 22 Apr 2017 15:00:17 -0700] rev 32165
dispatch: take over SignalInterrupt handling from scmutil dispatch handles KeyboardInterrupt already. This makes the code more consistent, and makes worker not print "killed!" if it receives SIGTERM in most cases (in rare cases there is still "killed!" printed, which will be fixed by the next patch).
Tue, 02 May 2017 17:29:01 -0500 merge stable into default
Kevin Bullock <kbullock+mercurial@ringworld.org> [Tue, 02 May 2017 17:29:01 -0500] rev 32164
merge stable into default
(0) -30000 -10000 -3000 -1000 -300 -100 -50 -30 +30 +50 +100 +300 +1000 +3000 +10000 tip