This instance will be upgraded to Heptapod 0.21.0rc2 on 2021-04-16 at 11:00 UTC+2 (a few minutes of down time)

Commit 78d07ffa authored by Yuya Nishihara's avatar Yuya Nishihara

Merge with stable

......@@ -166,3 +166,4 @@ f8e0ec6c493d07197d028bda7afb83b5a90c4f71 4.8.2
89b2d1787506fe50b46d8f0ddf4a3d271509cec1 5.1
1067191796e8ffc9d2c6edb97eb53c742ffcd9f2 5.3rc0
3262bbc94ea7a5b6c03d9cf3f1fe5cb43c04d1ff 5.3
719a85d2b8727fd09fa81f34256623de102c2622 5.3.1
FAKEROOT = fakeroot
PYTHON = python
PYTYPE = pytype
......@@ -12,6 +13,7 @@ help:
@echo ' local - build for inplace usage'
@echo ' tests - run all tests in the automatic test suite'
@echo ' app - create a py2app bundle on Mac OS X'
@echo ' tarball - create release tarball'
@echo ' clean - remove files created by other targets'
@echo ' (except installed files or dist source tarball)'
@echo ' distclean - remove all files created by other targets'
......@@ -53,6 +55,13 @@ app:
$(MAKE) -C "$(HGPATH)" local
FORCE_SETUPTOOLS= $(PYTHON) setup.py py2app -d "$(DISTDIR)"
.PHONY: tarball
tarball:
$(FAKEROOT) $(PYTHON) setup.py sdist
@echo
@echo '** You need to upload the tarball to '
@echo '** https://bitbucket.org/tortoisehg/targz/downloads/'
.PHONY: clean
clean:
$(PYTHON) setup.py clean
......
......@@ -20,6 +20,14 @@ if cwd in sys.path:
sys.path.remove(cwd)
sys.path.append(cwd)
if hasattr(sys, "frozen") and os.name == 'nt':
# Make `pip install --user` packages visible, because py2exe doesn't
# process sitecustomize.py.
vi = sys.version_info
sys.path.append(os.path.join(os.environ['APPDATA'], 'Python',
'Python%d%d' % (vi[0], vi[1]),
'site-packages'))
if os.environ.get('HGUNICODEPEDANTRY', False):
try:
reload(sys)
......
......@@ -4,20 +4,6 @@
#
# pip-compile --generate-hashes --output-file=contrib/packaging/venv_py2/requirements.txt contrib/packaging/venv_py2/requirements.txt.in
#
certifi==2019.9.11 \
--hash=sha256:e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50 \
--hash=sha256:fd7c7c74727ddcf00e9acd26bba8da604ffec95bf1c2144e67aff7a8b50e6cef \
# via dulwich
dulwich==0.19.15 \
--hash=sha256:3285366eb2e97ee89ac4715d24f8c66aff78f7c7040f2b1c3d7cfc8973293ced \
--hash=sha256:4090d5dc1b7bacccf23cbbf963d0ce7d97c3d93421c6d156b1c52b010f36c361 \
--hash=sha256:578722f11e881bbeb61aed80178839bcf9064c553051b78edabc91d5450996cb \
--hash=sha256:7b05cfb4fe9d4dab5121c880025f8f93a3062d2e7a89a2db375250e707c091da \
--hash=sha256:805a9b1932dc28b91f359f529c2e46b7623aec3ab719c96d3f2fc63d0d8d8411 \
--hash=sha256:81a023d151b11d560c6d17aeca36e107e43ca9cdc3e867e4f6d8fb43b2ff36f6 \
--hash=sha256:92681a22dbd68c9a538a3be6f0aeab46a877b01ea2a71d20e0b231d3209c6efc \
--hash=sha256:cebd1996f6c8ce7c4e0d9565b727be132094d9baab8d81721a893f8b180f6841 \
--hash=sha256:cfb9b80bc16454d92742a0b3d916ef9fc77e4c0502515d9a3068c8c7c7abb943
enum34==1.1.6 \
--hash=sha256:2d81cbbe0e73112bdfe6ef8576f2238f2ba27dd0d55752a776c41d38b7da2850 \
--hash=sha256:644837f692e5f550741432dd3f223bbb9852018674981b1664e5dc339387588a \
......@@ -28,7 +14,3 @@ iniparse==0.4 \
pygments==2.5.2 \
--hash=sha256:2a3fe295e54a20164a9df49c75fa58526d3be48e14aceba6d6b1e8ac0bfd6f1b \
--hash=sha256:98c8aa5a9f778fcd1026a17361ddaf7330d1b7c62ae97c3bb0ae73e0b9b6b0fe
urllib3==1.25.8 \
--hash=sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc \
--hash=sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc \
# via dulwich
dulwich
enum34 # Required to build PyQt5 >= 5.11
iniparse
Pygments
......@@ -4,20 +4,6 @@
#
# pip-compile --generate-hashes --output-file=contrib/packaging/venv_py3/requirements.txt contrib/packaging/venv_py3/requirements.txt.in
#
certifi==2019.9.11 \
--hash=sha256:e4f3620cfea4f83eedc95b24abd9cd56f3c4b146dd0177e83a21b4eb49e21e50 \
--hash=sha256:fd7c7c74727ddcf00e9acd26bba8da604ffec95bf1c2144e67aff7a8b50e6cef \
# via dulwich
dulwich==0.19.15 \
--hash=sha256:3285366eb2e97ee89ac4715d24f8c66aff78f7c7040f2b1c3d7cfc8973293ced \
--hash=sha256:4090d5dc1b7bacccf23cbbf963d0ce7d97c3d93421c6d156b1c52b010f36c361 \
--hash=sha256:578722f11e881bbeb61aed80178839bcf9064c553051b78edabc91d5450996cb \
--hash=sha256:7b05cfb4fe9d4dab5121c880025f8f93a3062d2e7a89a2db375250e707c091da \
--hash=sha256:805a9b1932dc28b91f359f529c2e46b7623aec3ab719c96d3f2fc63d0d8d8411 \
--hash=sha256:81a023d151b11d560c6d17aeca36e107e43ca9cdc3e867e4f6d8fb43b2ff36f6 \
--hash=sha256:92681a22dbd68c9a538a3be6f0aeab46a877b01ea2a71d20e0b231d3209c6efc \
--hash=sha256:cebd1996f6c8ce7c4e0d9565b727be132094d9baab8d81721a893f8b180f6841 \
--hash=sha256:cfb9b80bc16454d92742a0b3d916ef9fc77e4c0502515d9a3068c8c7c7abb943
iniparse==0.4 \
--hash=sha256:abc1ee12d2cfb2506109072d6c21e40b6c75a3fe90a9c924327d80bc0d99c054
pygments==2.5.2 \
......@@ -52,7 +38,3 @@ qscintilla==2.10.8 \
--hash=sha256:a91687550488e5583a3b59d01ae630b3e8b8a39dfd4af7f3141e3580cbbe3717 \
--hash=sha256:ab99d9ea330a876aa7d55e835a8c3a492fbca5dc5fa7fbd6903025e8659ba0be \
--hash=sha256:c9ca9a68993965a0bc6e9bb85eec48b3677803e464fa9c85dcb81803c4cf24bd
urllib3==1.25.8 \
--hash=sha256:2f3db8b19923a873b3e5256dc9c2dedfa883e33d87c690d9c7913e1f40673cdc \
--hash=sha256:87716c2d2a7121198ebcb7ce7cccf6ce5e9ba539041cfbaeecfb641dc0bf6acc \
# via dulwich
......@@ -3,7 +3,7 @@
import time
def reposetup(ui, repo):
delay = ui.configint('debug', 'delaylock', 0)
delay = ui.configint(b'debug', b'delaylock', 0)
if delay <= 0:
return
class delaylockrepo(repo.__class__):
......
......@@ -150,7 +150,7 @@ class HgClient(object):
# TODO: use hglib in order to avoid pollution of global space?
origwd = os.getcwd()
ui = hglib.loadui()
ui.setconfig('ui', 'strict', True)
ui.setconfig(b'ui', b'strict', True)
ui.fout = pycompat.bytesio()
ui.ferr = pycompat.bytesio()
args = list(args)
......
......@@ -34,7 +34,7 @@ class RepoAgentAttributeTest(unittest.TestCase):
def setUp(self):
ui = hglib.loadui()
ui.setconfig('tortoisehg', 'monitorrepo', 'never')
ui.setconfig(b'tortoisehg', b'monitorrepo', b'never')
repo = thgrepo.repository(ui, self.hg.path)
self.agent = thgrepo.RepoAgent(repo)
......@@ -74,7 +74,7 @@ class _RepoAgentChangedSignalTestBase(unittest.TestCase):
self.hg.fappend('.hg/hgrc',
'[debug]\ndelaylock = %d\n' % self.mtimedelay)
ui = hglib.loadui()
ui.setconfig('tortoisehg', 'monitorrepo', self.monitorrepo)
ui.setconfig(b'tortoisehg', b'monitorrepo', self.monitorrepo)
repo = thgrepo.repository(ui, self.hg.path)
self.agent = agent = thgrepo.RepoAgent(repo)
self.repositoryChanged = mock.Mock()
......@@ -199,7 +199,7 @@ class _RepoAgentChangedSignalTestBase(unittest.TestCase):
class RepoAgentChangedSignalWithMonitorTest(_RepoAgentChangedSignalTestBase):
monitorrepo = 'always'
monitorrepo = b'always'
def test_filesystem_watcher(self):
self.hg.update('0')
......@@ -226,4 +226,4 @@ class RepoAgentChangedSignalWithMonitorTest(_RepoAgentChangedSignalTestBase):
class RepoAgentChangedSignalWithoutMonitorTest(_RepoAgentChangedSignalTestBase):
monitorrepo = 'never'
monitorrepo = b'never'
......@@ -188,8 +188,8 @@ class RepoManagerServiceTest(unittest.TestCase):
def setUp(self):
ui = hglib.loadui()
ui.setconfig('tortoisehg', 'cmdworker', 'server')
ui.setconfig('tortoisehg', 'monitorrepo', 'never')
ui.setconfig(b'tortoisehg', b'cmdworker', b'server')
ui.setconfig(b'tortoisehg', b'monitorrepo', b'never')
self.repoman = thgrepo.RepoManager(ui)
def tearDown(self):
......
......@@ -23,6 +23,14 @@ if hasattr(sys, "frozen"):
if sys.frozen == 'windows_exe':
# sys.stdin is invalid, should be None. Fixes svn, git subrepos
sys.stdin = None
# Make `pip install --user` packages visible, because py2exe doesn't
# process sitecustomize.py.
vi = sys.version_info
sys.path.append(os.path.join(os.environ['APPDATA'], 'Python',
'Python%d%d' % (vi[0], vi[1]),
'site-packages'))
if 'THGDEBUG' in os.environ:
import win32traceutil
print('starting')
......
......@@ -964,7 +964,7 @@ class CommitWidget(QWidget, qtlib.TaskWidget):
'issue.linkmandatory')
if linkmandatory:
issueregex = None
s = self.repo.ui.config('tortoisehg', 'issue.regex')
s = self.repo.ui.config(b'tortoisehg', b'issue.regex')
if s:
try:
issueregex = re.compile(s)
......@@ -1565,7 +1565,7 @@ class CommitDialog(QDialog):
def postcommit(self):
repo = self.commit.stwidget.repo
if repo.ui.configbool('tortoisehg', 'closeci'):
if repo.ui.configbool(b'tortoisehg', b'closeci'):
if self.commit.canExit():
self.reject()
else:
......
......@@ -93,8 +93,8 @@ class HgignoreDialog(QDialog):
hbox = QHBoxLayout()
vbox.addLayout(hbox)
ignorefiles = [repo.wjoin(b'.hgignore')]
for name, value in repo.ui.configitems('ui'):
if name == 'ignore' or name.startswith('ignore.'):
for name, value in repo.ui.configitems(b'ui'):
if name == b'ignore' or name.startswith(b'ignore.'):
ignorefiles.append(util.expandpath(value))
filecombo = QComboBox()
......
......@@ -190,17 +190,17 @@ class PostReviewDialog(QDialog):
qtlib.readStringList(s, 'reviewboard/summary_edit_history'))
try:
self.repo_id = int(self.repo.ui.config('reviewboard', 'repoid'))
self.repo_id = int(self.repo.ui.config(b'reviewboard', b'repoid'))
except Exception:
self.repo_id = None
if not self.repo_id:
self.repo_id = qtlib.readInt(s, 'reviewboard/repo_id')
self.server = self.repo.ui.config('reviewboard', 'server')
self.user = self.repo.ui.config('reviewboard', 'user')
self.password = self.repo.ui.config('reviewboard', 'password')
self.browser = self.repo.ui.config('reviewboard', 'browser')
self.server = self.repo.ui.config(b'reviewboard', b'server')
self.user = self.repo.ui.config(b'reviewboard', b'user')
self.password = self.repo.ui.config(b'reviewboard', b'password')
self.browser = self.repo.ui.config(b'reviewboard', b'browser')
def writeSettings(self):
s = QSettings()
......
......@@ -321,7 +321,7 @@ def run(ui, repoagent, *pats, **opts):
repo = repoagent.rawRepo()
pats = hglib.canonpaths(pats)
command = opts['alias']
imm = repo.ui.config('tortoisehg', 'immediate')
imm = repo.ui.config(b'tortoisehg', b'immediate')
if opts.get('headless') or command in imm.lower():
cmdline = [command] + pats
return HeadlessQuickop(repoagent, cmdline)
......
......@@ -2322,9 +2322,9 @@ class LightRepoWindow(QMainWindow):
self.setIconSize(qtlib.smallIconSize())
repo = repoagent.rawRepo()
val = repo.ui.config('tortoisehg', 'tasktabs').lower()
if val not in ('east', 'west'):
repo.ui.setconfig('tortoisehg', 'tasktabs', 'east')
val = repo.ui.config(b'tortoisehg', b'tasktabs').lower()
if val not in (b'east', b'west'):
repo.ui.setconfig(b'tortoisehg', b'tasktabs', b'east')
rw = RepoWidget(repoagent, self)
self.setCentralWidget(rw)
......
......@@ -202,9 +202,9 @@ class BoolRBGroup(QWidget):
## common APIs for all edit widgets
def setValue(self, curvalue):
self.curvalue = curvalue
if curvalue == 'True':
if curvalue == b'True':
self.trueRB.setChecked(True)
elif curvalue == 'False':
elif curvalue == b'False':
self.falseRB.setChecked(True)
else:
self.unspecRB.setChecked(True)
......
......@@ -126,7 +126,7 @@ class SignDialog(QDialog):
self.clear_status()
key = opts.get('key', '')
if not key:
key = repo.ui.config("gpg", "key", '')
key = repo.ui.config(b"gpg", b"key", b'')
self.keyLineEdit.setText(hglib.tounicode(key))
self.replaceCheckBox.setChecked(bool(opts.get('force')))
self.localCheckBox.setChecked(bool(opts.get('local')))
......
......@@ -1039,11 +1039,11 @@ class Workbench(QMainWindow):
readme = None
if repo:
# Try to get the README configured for the repo of the current tab
readmeglobal = self.ui.config('tortoisehg', 'readme')
readmeglobal = self.ui.config(b'tortoisehg', b'readme')
if readmeglobal:
# Note that repo.ui.config() falls back to the self.ui.config()
# if the key is not set on the current repo's configuration file
readme = repo.ui.config('tortoisehg', 'readme')
readme = repo.ui.config(b'tortoisehg', b'readme')
if readmeglobal != readme:
# The readme is set on the current repo configuration file
return readme
......
......@@ -519,12 +519,12 @@ def difftools(ui):
return diffopts, mergeopts
tools = {}
for cmd, path in ui.configitems('extdiff'):
for cmd, path in ui.configitems(b'extdiff'):
if cmd.startswith(b'cmd.'):
cmd = cmd[4:]
if not path:
path = cmd
diffopts = ui.config('extdiff', b'opts.' + cmd)
diffopts = ui.config(b'extdiff', b'opts.' + cmd)
diffopts = pycompat.shlexsplit(diffopts)
diffopts, mergeopts = fixup_extdiff(diffopts)
tools[cmd] = [path, diffopts, mergeopts]
......@@ -714,14 +714,14 @@ def copydynamicconfig(srcui, destui):
"""Copy config values that come from command line or code
>>> srcui = uimod.ui()
>>> srcui.setconfig('paths', 'default', 'http://example.org/',
... '/repo/.hg/hgrc:2')
>>> srcui.setconfig('patch', 'eol', 'auto', 'eol')
>>> srcui.setconfig(b'paths', b'default', b'http://example.org/',
... b'/repo/.hg/hgrc:2')
>>> srcui.setconfig(b'patch', b'eol', b'auto', b'eol')
>>> destui = uimod.ui()
>>> copydynamicconfig(srcui, destui)
>>> destui.config('paths', 'default') is None
>>> destui.config(b'paths', b'default') is None
True
>>> destui.config('patch', 'eol'), destui.configsource('patch', 'eol')
>>> destui.config(b'patch', b'eol'), destui.configsource(b'patch', b'eol')
('auto', 'eol')
"""
for section, name, value in srcui.walkconfig():
......@@ -731,7 +731,7 @@ def copydynamicconfig(srcui, destui):
continue
if source == b'none':
# ui.configsource returns 'none' by default
source = ''
source = b''
destui.setconfig(section, name, value, source)
def shortreponame(ui):
......
......@@ -68,7 +68,7 @@ class patchctx(object):
try:
self._branch = ph.branch or ''
self._node = binascii.unhexlify(ph.nodeid)
if self._repo.ui.configbool('mq', 'secret'):
if self._repo.ui.configbool(b'mq', b'secret'):
self._phase = b'secret'
except TypeError:
pass
......@@ -169,7 +169,7 @@ class patchctx(object):
def isStandin(self, path): return False
def longsummary(self):
if self._repo.ui.configbool('tortoisehg', 'longsummary'):
if self._repo.ui.configbool(b'tortoisehg', b'longsummary'):
limit = 80
else:
limit = None
......
......@@ -29,7 +29,6 @@
<File Name="VCRUNTIME140.dll" />
<File Name="MSVCP140.dll" />
<File Name="sqlite3.dll" />
<File Name="markupsafe._speedups.pyd" />
<File Name="mercurial.cext.base85.pyd" />
<File Name="mercurial.cext.bdiff.pyd" />
<File Name="mercurial.cext.mpatch.pyd" />
......@@ -47,9 +46,6 @@
<File Name="PyQt5.QtSvg.pyd" />
<File Name="PyQt5.QtXml.pyd" />
<File Name="bz2.pyd" />
<File Name="dulwich._diff_tree.pyd" />
<File Name="dulwich._objects.pyd" />
<File Name="dulwich._pack.pyd" />
<File Name="select.pyd" />
<File Name="PyQt5.sip.pyd" />
<File Name="unicodedata.pyd" />
......
......@@ -33,7 +33,7 @@
<!-- dist.wxs -->
<?define dist.guid = {572ad129-0aa5-4760-ab85-31d188dc1beb} ?>
<?define lib.guid = {dc309bbd-bef2-4475-8e58-27e2c8d7cd75} ?>
<?define lib.guid = {d324e4c3-a8a9-4875-bcb4-3bf0858e14a0} ?>
<?define imageformats.guid = {12885995-61ed-468f-a964-3654d091138e} ?>
<?define platforms.guid = {4b2c42d4-fbb3-4449-b1df-31bf789e009e} ?>
<?define KDiff3EXE.guid = {075ECC11-1B44-48DB-B7FD-D3207BB801A4} ?>
......
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment