Page MenuHomePhabricator

spectral (Kyle Lippincott)
User

Projects

User does not belong to any projects.

User Details

User Since
Jun 29 2017, 4:34 PM (139 w, 5 h)

Recent Activity

Sat, Feb 22

spectral closed D8140: shelve: fix ordering of merge labels.
Sat, Feb 22, 3:50 AM
spectral committed rHG69b091cdc506: shelve: fix ordering of merge labels.
shelve: fix ordering of merge labels
Sat, Feb 22, 3:50 AM
spectral closed D8139: shelve: add test clearly demonstrating that the conflict labels are backwards.
Sat, Feb 22, 3:50 AM
spectral committed rHG2527c10a2569: shelve: add test clearly demonstrating that the conflict labels are backwards.
shelve: add test clearly demonstrating that the conflict labels are backwards
Sat, Feb 22, 3:50 AM

Fri, Feb 21

spectral updated the diff for D8140: shelve: fix ordering of merge labels.
Fri, Feb 21, 3:45 PM
spectral closed D8141: darwin: add another preemptive gui() call when using chg.
Fri, Feb 21, 4:55 AM
spectral committed rHG6392bd7c26a8: darwin: add another preemptive gui() call when using chg.
darwin: add another preemptive gui() call when using chg
Fri, Feb 21, 4:55 AM

Thu, Feb 20

spectral created D8141: darwin: add another preemptive gui() call when using chg.
Thu, Feb 20, 9:05 PM
spectral created D8140: shelve: fix ordering of merge labels.
Thu, Feb 20, 8:13 PM
spectral created D8139: shelve: add test clearly demonstrating that the conflict labels are backwards.
Thu, Feb 20, 8:13 PM

Mon, Feb 10

spectral abandoned D8022: chg: pass copies of some envvars so we can detect py37+ modifications.
Mon, Feb 10, 2:29 PM
spectral added a comment to D8023: chg: read CHGORIG_ values from env and handle these appropriately.

We decided to use a different method to resolve this issue.

Mon, Feb 10, 2:29 PM

Fri, Feb 7

spectral closed D8091: py3: fully fix bundlepart.__repr__ to return str not bytes.
Fri, Feb 7, 3:41 PM
spectral committed rHG74172a234dd3: py3: fully fix bundlepart.__repr__ to return str not bytes.
py3: fully fix bundlepart.__repr__ to return str not bytes
Fri, Feb 7, 3:40 PM

Thu, Feb 6

spectral added inline comments to D8089: py3: __repr__ needs to return str, not bytes.
Thu, Feb 6, 6:56 PM
spectral created D8091: py3: fully fix bundlepart.__repr__ to return str not bytes.
Thu, Feb 6, 6:56 PM
spectral closed D8089: py3: __repr__ needs to return str, not bytes.
Thu, Feb 6, 5:21 PM
spectral committed rHGc443b9ba6f63: py3: __repr__ needs to return str, not bytes.
py3: __repr__ needs to return str, not bytes
Thu, Feb 6, 5:20 PM
spectral created D8089: py3: __repr__ needs to return str, not bytes.
Thu, Feb 6, 1:25 PM
spectral closed D8039: chg: force-set LC_CTYPE on server start to actual value from the environment.
Thu, Feb 6, 9:32 AM
spectral committed rHG04a3ae7aba14: chg: force-set LC_CTYPE on server start to actual value from the environment.
chg: force-set LC_CTYPE on server start to actual value from the environment
Thu, Feb 6, 9:31 AM

Tue, Feb 4

spectral abandoned D8021: chg: switch to using global `environ` instead of envp from main.
Tue, Feb 4, 4:57 PM
spectral updated the diff for D8039: chg: force-set LC_CTYPE on server start to actual value from the environment.
Tue, Feb 4, 4:57 PM
spectral updated the diff for D8023: chg: read CHGORIG_ values from env and handle these appropriately.
Tue, Feb 4, 4:55 PM
spectral updated the diff for D8022: chg: pass copies of some envvars so we can detect py37+ modifications.
Tue, Feb 4, 4:55 PM
spectral added a comment to D8039: chg: force-set LC_CTYPE on server start to actual value from the environment.
In D8039#118719, @yuja wrote:
What do you think about this approach:
1. The server detects that LC_TYPE is coerced.
2. When handling the "validate" command, the server sends back "invalidate this server, and fallback to original hg" response.
This makes chg/non-chg behave consistently with some startup overhead in mis-configured environment. The chg client can potentially print a warning to remind the user to fix their environment.

That could be, but if we do want to make chg/hg behavior consistent, maybe we
can adjust the hash computation logic?

  1. client sends CHG_ORIG_LC_CTYPE or CHG_UNSET_LC_CTYPE when spawning server
  2. they're kept in environ dict, but override LC_CTYPE while computing hash, and excluded from the hash
  3. client does not send these variables over setenv command, but passes the validation because {CHG_ORIG_LC_CTYPE: x, LC_CTYPE: y} == {LC_CTYPE: x}.
Tue, Feb 4, 4:48 PM

Wed, Jan 29

spectral closed D8024: profiling: flush stdout before writing profile to stderr.
Wed, Jan 29, 6:18 PM
spectral committed rHGd6d4170882cd: profiling: flush stdout before writing profile to stderr.
profiling: flush stdout before writing profile to stderr
Wed, Jan 29, 6:18 PM
spectral added a comment to D8022: chg: pass copies of some envvars so we can detect py37+ modifications.

I'll see how easy that is to implement and send a separate review request once I have it working.

Wed, Jan 29, 5:24 PM
spectral created D8039: chg: force-set LC_CTYPE on server start to actual value from the environment.
Wed, Jan 29, 5:24 PM
spectral added a comment to D8022: chg: pass copies of some envvars so we can detect py37+ modifications.
In D8022#118428, @yuja wrote:
This would cause a difference in behavior between hg and chg. I don't know how big of an issue that would be.
hg: starts up, python coerces LC_CTYPE, hg spawns a non-python subprocess, LC_CTYPE is set to the coerced value
chg: starts up, python coerces LC_CTYPE, chg fixes it, hg spawns a non-python subprocess, LC_CTYPE is set to the original value (or unset).

I think a minor behavior difference is acceptable. I see this is the problem
of Python 3 design "the world is unicode", and IMHO we want to work around
the problem with minimal changes.

Wed, Jan 29, 2:52 PM

Jan 28 2020

spectral updated the diff for D8021: chg: switch to using global `environ` instead of envp from main.
Jan 28 2020, 1:58 PM
spectral added a comment to D8021: chg: switch to using global `environ` instead of envp from main.

I prefer passing in (const char**)environ to hgc_setenv().

Jan 28 2020, 1:57 PM
spectral updated the diff for D8021: chg: switch to using global `environ` instead of envp from main.
Jan 28 2020, 1:57 PM
spectral updated the diff for D8022: chg: pass copies of some envvars so we can detect py37+ modifications.
Jan 28 2020, 1:57 PM
spectral added a comment to D8022: chg: pass copies of some envvars so we can detect py37+ modifications.
In D8022#118325, @yuja wrote:

Another idea. How about sending the true LC_CTYPE value as a command
argument so the env mangling can be reverted?

  1. spawn hg serve --cmdserver chgunix ... with --daemon-postexec setenv:LC_CTYPE=$LC_CTYPE
  2. runservice() overwrites LC_CTYPE to the specified value (undo coercing)
  3. chgserver hashes the restored environ

Since the "coercing" is 100% useless for Mercurial, restoring LC_CTYPE
should be perfectly fine. And unlike setting PYTHONCOERCECLOCALE=0,
Python subprocesses can still see its own "coercing" results for better
or worse.

Jan 28 2020, 1:57 PM

Jan 27 2020

spectral created D8024: profiling: flush stdout before writing profile to stderr.
Jan 27 2020, 9:44 PM
spectral created D8023: chg: read CHGORIG_ values from env and handle these appropriately.
Jan 27 2020, 7:57 PM
spectral created D8021: chg: switch to using global `environ` instead of envp from main.
Jan 27 2020, 7:57 PM
spectral created D8022: chg: pass copies of some envvars so we can detect py37+ modifications.
Jan 27 2020, 7:57 PM

Jan 23 2020

spectral committed rHGae596fac8ba0: crecord: fix a concatenation of bytes and str on py3.
crecord: fix a concatenation of bytes and str on py3
Jan 23 2020, 11:23 AM
spectral closed D7970: crecord: fix a concatenation of bytes and str on py3.
Jan 23 2020, 7:33 AM
spectral committed rHG43410ec7462b: crecord: fix a concatenation of bytes and str on py3.
crecord: fix a concatenation of bytes and str on py3
Jan 23 2020, 7:33 AM

Jan 22 2020

spectral created D7970: crecord: fix a concatenation of bytes and str on py3.
Jan 22 2020, 1:04 PM
spectral committed rHGf0a4084f82d6: cext: change two more vars to Py_ssize_t in manifest.c.
cext: change two more vars to Py_ssize_t in manifest.c
Jan 22 2020, 11:03 AM

Jan 21 2020

spectral closed D7964: cext: change two more vars to Py_ssize_t in manifest.c.
Jan 21 2020, 5:06 PM
spectral committed rHG0e198f1f276a: cext: change two more vars to Py_ssize_t in manifest.c.
cext: change two more vars to Py_ssize_t in manifest.c
Jan 21 2020, 5:06 PM
spectral created D7964: cext: change two more vars to Py_ssize_t in manifest.c.
Jan 21 2020, 3:25 PM

Jan 17 2020

spectral closed D7913: cext: fix compiler warning about sign changing.
Jan 17 2020, 7:21 AM
spectral committed rHG969527ac7b44: cext: fix compiler warning about sign changing.
cext: fix compiler warning about sign changing
Jan 17 2020, 7:21 AM

Jan 16 2020

spectral closed D7912: py3: fix curses chunkselector fallback (when diffs are too large) on py3.
Jan 16 2020, 4:49 PM
spectral committed rHG19533e4c3450: py3: fix curses chunkselector fallback (when diffs are too large) on py3.
py3: fix curses chunkselector fallback (when diffs are too large) on py3
Jan 16 2020, 4:49 PM
spectral created D7913: cext: fix compiler warning about sign changing.
Jan 16 2020, 3:39 PM
spectral created D7912: py3: fix curses chunkselector fallback (when diffs are too large) on py3.
Jan 16 2020, 3:20 PM

Jan 9 2020

spectral committed rHG98944715a02c: fix: convert clang-format-ignorelist to use wildcards.
fix: convert clang-format-ignorelist to use wildcards
Jan 9 2020, 8:39 AM
spectral closed D7619: fix: convert clang-format-ignorelist to use wildcards.
Jan 9 2020, 8:39 AM

Jan 8 2020

spectral abandoned D7617: fix: make example fix hgrc work in subdirs.
Jan 8 2020, 5:36 PM
spectral added inline comments to D7815: sha1dc: initial implementation of Python extension.
Jan 8 2020, 4:51 PM
spectral committed rHG4e0a6d157910: progress: flush stderr after clearing.
progress: flush stderr after clearing
Jan 8 2020, 2:54 PM
spectral closed D7784: progress: flush stderr after clearing.
Jan 8 2020, 2:54 PM
spectral closed D7811: tests: fix a "naked exception" issue in test-remotefilelog-prefetch.t.
Jan 8 2020, 2:49 PM
spectral committed rHG1e0783b946c8: tests: fix a "naked exception" issue in test-remotefilelog-prefetch.t.
tests: fix a "naked exception" issue in test-remotefilelog-prefetch.t
Jan 8 2020, 2:49 PM
spectral created D7811: tests: fix a "naked exception" issue in test-remotefilelog-prefetch.t.
Jan 8 2020, 1:49 PM
spectral committed rHGac72e17457e5: fix: correct the clang-format example hgrc so that it actually works.
fix: correct the clang-format example hgrc so that it actually works
Jan 8 2020, 1:10 PM
spectral closed D7618: fix: correct the clang-format example hgrc so that it actually works.
Jan 8 2020, 11:50 AM
spectral committed rHG7a16c779a9d0: fix: correct the clang-format example hgrc so that it actually works.
fix: correct the clang-format example hgrc so that it actually works
Jan 8 2020, 11:50 AM

Jan 7 2020

spectral closed D7785: remotefilelog: actually fix (and test this time) a bytes vs str issue.
Jan 7 2020, 10:26 AM
spectral committed rHGfaf00e30b63f: remotefilelog: actually fix (and test this time) a bytes vs str issue.
remotefilelog: actually fix (and test this time) a bytes vs str issue
Jan 7 2020, 10:26 AM

Jan 2 2020

spectral created D7785: remotefilelog: actually fix (and test this time) a bytes vs str issue.
Jan 2 2020, 10:56 PM
spectral created D7784: progress: flush stderr after clearing.
Jan 2 2020, 8:30 PM

Dec 26 2019

spectral closed D7703: fix: fix handling of merge commits by using overlayworkingctx.
Dec 26 2019, 7:14 PM
spectral committed rHGeebdd6709868: fix: fix handling of merge commits by using overlayworkingctx.
fix: fix handling of merge commits by using overlayworkingctx
Dec 26 2019, 7:14 PM

Dec 18 2019

spectral created D7703: fix: fix handling of merge commits by using overlayworkingctx.
Dec 18 2019, 6:33 PM

Dec 16 2019

spectral closed D7665: dirstate: when calling rebuild(), avoid some N^2 codepaths.
Dec 16 2019, 7:02 PM
spectral committed rHG7eb6a2680ae6: dirstate: when calling rebuild(), avoid some N^2 codepaths.
dirstate: when calling rebuild(), avoid some N^2 codepaths
Dec 16 2019, 7:02 PM
spectral closed D7620: merge: add commands.merge.require-rev to require an argument to hg merge.
Dec 16 2019, 1:32 AM
spectral closed D7664: rebase: make rebase not crash if p1 == p2 != nullid.
Dec 16 2019, 1:30 AM
spectral committed rHGc6feee1e4d5b: rebase: make rebase not crash if p1 == p2 != nullid.
rebase: make rebase not crash if p1 == p2 != nullid
Dec 16 2019, 1:30 AM
spectral committed rHG8caec25f5d8f: merge: add commands.merge.require-rev to require an argument to hg merge.
merge: add commands.merge.require-rev to require an argument to hg merge
Dec 16 2019, 1:30 AM

Dec 13 2019

spectral updated the diff for D7620: merge: add commands.merge.require-rev to require an argument to hg merge.
Dec 13 2019, 8:39 PM
spectral added a comment to D7620: merge: add commands.merge.require-rev to require an argument to hg merge.
In D7620#112376, @dlax wrote:

This should be documented in mercurial/helptext/config.txt I think.

Dec 13 2019, 8:38 PM
spectral added inline comments to D7665: dirstate: when calling rebuild(), avoid some N^2 codepaths.
Dec 13 2019, 8:27 PM
spectral created D7664: rebase: make rebase not crash if p1 == p2 != nullid.
Dec 13 2019, 6:58 PM
spectral created D7665: dirstate: when calling rebuild(), avoid some N^2 codepaths.
Dec 13 2019, 6:58 PM

Dec 12 2019

spectral updated the diff for D7617: fix: make example fix hgrc work in subdirs.
Dec 12 2019, 7:38 PM
spectral updated the diff for D7618: fix: correct the clang-format example hgrc so that it actually works.
Dec 12 2019, 7:34 PM
spectral added a comment to D7617: fix: make example fix hgrc work in subdirs.

See D7065 and D7570. I didn't realize you could stack set: and the other patterns like this.

Dec 12 2019, 7:31 PM
spectral created D7620: merge: add commands.merge.require-rev to require an argument to hg merge.
Dec 12 2019, 5:50 PM
spectral created D7618: fix: correct the clang-format example hgrc so that it actually works.
Dec 12 2019, 5:42 PM
spectral created D7619: fix: convert clang-format-ignorelist to use wildcards.
Dec 12 2019, 5:42 PM
spectral created D7617: fix: make example fix hgrc work in subdirs.
Dec 12 2019, 5:42 PM
spectral added a comment to D7506: phabricator: add a "phabstatus" show view.
In D7506#111966, @dlax wrote:

I don't think from . import show works generally.

I did that because test-check-module-imports.t complained otherwise when using from hgext import show:

hgext/phabricator.py:89: import should be relative: hgext

Also, there's already a similar from . import rebase in hgext/split.py so I thought that relative import was fine.
I'm happy to change if there's a solution, though.

Dec 12 2019, 1:19 PM
spectral closed D7550: chg: fix chg to work with py3.7+ "coercing" the locale.
Dec 12 2019, 9:15 AM
spectral committed rHG5e0f6451e2d2: chg: fix chg to work with py3.7+ "coercing" the locale.
chg: fix chg to work with py3.7+ "coercing" the locale
Dec 12 2019, 9:15 AM
spectral committed rHG229215fc1c1c: fuzz: fix mpatch_corpus to not have an overridden __repr__ on py3.
fuzz: fix mpatch_corpus to not have an overridden __repr__ on py3
Dec 12 2019, 7:52 AM
spectral closed D7606: fuzz: fix mpatch_corpus to not have an overridden __repr__ on py3.
Dec 12 2019, 7:52 AM

Dec 11 2019

spectral added a comment to D7506: phabricator: add a "phabstatus" show view.

I don't think from . import show works generally. I received errors because I imported phabricator via a path (pointing directly at the .py file, something like [extensions] phabricator = /home/spectral/src/hg/hgext/phabricator.py), not by doing something like extensions.phabricator=. I received the following errors:

Dec 11 2019, 6:37 PM
spectral created D7606: fuzz: fix mpatch_corpus to not have an overridden __repr__ on py3.
Dec 11 2019, 6:27 PM
spectral added a comment to D7550: chg: fix chg to work with py3.7+ "coercing" the locale.
In D7550#111235, @yuja wrote:
When the environment is empty (specifically: it doesn't contain LC_ALL,
LC_CTYPE, or LANG), Python will "coerce" the locale environment variables to be
a UTF-8 capable one. It sets LC_CTYPE in the environment, and this breaks chg,
since chg operates by:
- start hg, using whatever environment the user has when chg starts
- hg stores a hash of this "original" environment, but python has already set LC_CTYPE even though the user doesn't have it in their environment
- chg calls setenv over the commandserver. This clears the environment inside of hg and sets it to be exactly what the environment in chg is (without LC_CTYPE).
- chg calls validate to ensure that the environment hg is using (after the setenv call) is the one that the chg process has - if not, it is assumed the user changed their environment and we should use a different server. This will *never* be true in this situation because LC_CTYPE was removed.

Sigh. Can we work around this weird behavior by making chg do
putenv("PYTHONCOERCECLOCALE=0")? I think it's simple and more desired
behavior than the default of Python 3.

Dec 11 2019, 6:14 PM
spectral closed D7601: fuzz: fix test-fuzz-targets.t to run with python3.
Dec 11 2019, 6:54 AM