by
Changes to 39 files · Browse files at 6f8ea4eab7f0 Showing diff from parent aff0628998c0 868ccf195869 Diff from another changeset...
@@ -51,7 +51,7 @@ # The short X.Y version.
version = '2.0'
# The full version, including alpha/beta/rc tags.
-release = '2.0.0'
+release = '2.0.3'
# The language for content autogenerated by Sphinx. Refer to documentation
# for a list of supported languages.
|
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
This file's diff was not loaded because this changeset is very large. Load changes Loading... |
|
@@ -104,11 +104,23 @@ try:
from mercurial import subrepo, commands
- def genSubrepoRevChangedDescription(sfrom, sto):
+ def genSubrepoRevChangedDescription(subrelpath, sfrom, sto):
"""Generate a subrepository revision change description"""
out = []
opts = {'date':None, 'user':None, 'rev':[sfrom]}
- if not sfrom:
+ subabspath = os.path.join(repo.root, subrelpath)
+ missingsub = not os.path.isdir(subabspath)
+ def isinitialrevision(rev):
+ return all([el == '0' for el in rev])
+ if isinitialrevision(sfrom):
+ sfrom = ''
+ if isinitialrevision(sto):
+ sto = ''
+ if not sfrom and not sto:
+ sstatedesc = 'new'
+ out.append(_('Subrepo created and set to initial revision.') + u'\n\n')
+ return out, sstatedesc
+ elif not sfrom:
sstatedesc = 'new'
out.append(_('Subrepo initialized to revision:') + u'\n\n')
elif not sto:
@@ -117,52 +129,73 @@ return out, sstatedesc
else:
sstatedesc = 'changed'
+
out.append(_('Revision has changed from:') + u'\n\n')
+ if missingsub:
+ out.append(hglib.tounicode(_('changeset: %s') % sfrom + '\n'))
+ else:
+ _ui.pushbuffer()
+ commands.log(_ui, srepo, **opts)
+ out.append(hglib.tounicode(_ui.popbuffer()))
+
+ out.append(_('To:') + u'\n')
+ if missingsub:
+ stolog = _('changeset: %s') % sto + '\n\n'
+ stolog += _('Subrepository not found in working directory.') + '\n'
+ stolog += _('Further subrepository revision information cannot be retrieved.') + '\n'
+ else:
+ opts['rev'] = [sto]
_ui.pushbuffer()
commands.log(_ui, srepo, **opts)
- out.append(hglib.tounicode(_ui.popbuffer()))
- out.append(_('To:') + u'\n')
- opts['rev'] = [sto]
- _ui.pushbuffer()
- commands.log(_ui, srepo, **opts)
- stolog = _ui.popbuffer()
+ stolog = _ui.popbuffer()
+
if not stolog:
stolog = _('Initial revision')
out.append(hglib.tounicode(stolog))
+
return out, sstatedesc
srev = ctx.substate.get(wfile, subrepo.nullstate)[1]
+ srepo = None
try:
- sub = ctx.sub(wfile)
- if isinstance(sub, subrepo.hgsubrepo):
- srepo = sub._repo
- sactual = srepo['.'].hex()
+ subabspath = os.path.join(repo.root, wfile)
+ if not os.path.isdir(subabspath):
+ sactual = ''
else:
- self.error = _('Not a Mercurial subrepo, not previewable')
- return
+ sub = ctx.sub(wfile)
+ if isinstance(sub, subrepo.hgsubrepo):
+ srepo = sub._repo
+ sactual = srepo['.'].hex()
+ else:
+ self.error = _('Not a Mercurial subrepo, not previewable')
+ return
except (util.Abort), e:
- sub = ctx.p1().sub(wfile)
- srepo = sub._repo
sactual = ''
+
out = []
_ui = uimod.ui()
- _ui.pushbuffer()
- commands.status(_ui, srepo)
- data = _ui.popbuffer()
- if data:
- out.append(_('File Status:') + u'\n')
- out.append(hglib.tounicode(data))
- out.append(u'\n')
+
+ if srepo is None or ctx.rev() is not None:
+ data = []
+ else:
+ _ui.pushbuffer()
+ commands.status(_ui, srepo)
+ data = _ui.popbuffer()
+ if data:
+ out.append(_('File Status:') + u'\n')
+ out.append(hglib.tounicode(data))
+ out.append(u'\n')
+
sstatedesc = 'changed'
if ctx.rev() is not None:
sparent = ctx.p1().substate.get(wfile, subrepo.nullstate)[1]
- subrepochange, sstatedesc = genSubrepoRevChangedDescription(sparent, srev)
+ subrepochange, sstatedesc = genSubrepoRevChangedDescription(wfile, sparent, srev)
out += subrepochange
else:
sstatedesc = 'dirty'
if srev != sactual:
subrepochange, sstatedesc = \
- genSubrepoRevChangedDescription(srev, sactual)
+ genSubrepoRevChangedDescription(wfile, srev, sactual)
out += subrepochange
if data:
sstatedesc += ' and dirty'
|
@@ -132,6 +132,7 @@
def setupUi(self, o):
self.editToolbar = QToolBar(self)
+ self.editToolbar.setContextMenuPolicy(Qt.PreventContextMenu)
self.addToolBar(Qt.ToolBarArea(Qt.TopToolBarArea), self.editToolbar)
self.actionClose = QAction(self, shortcut=QKeySequence.Close)
self.actionReload = QAction(self, shortcut=QKeySequence.Refresh)
@@ -264,6 +265,7 @@
def setupUi(self, o):
self.editToolbar = QToolBar(self)
+ self.editToolbar.setContextMenuPolicy(Qt.PreventContextMenu)
self.addToolBar(Qt.ToolBarArea(Qt.TopToolBarArea), self.editToolbar)
self.actionClose = QAction(self, shortcut=QKeySequence.Close)
self.actionReload = QAction(self, shortcut=QKeySequence.Refresh)
|
@@ -270,6 +270,7 @@ sw.outgoingNodes.connect(self.setOutgoingNodes)
sw.showMessage.connect(self.showMessage)
sw.incomingBundle.connect(self.setBundle)
+ sw.pullCompleted.connect(self.onPullCompleted)
sw.refreshTargets(self.rev)
return sw
@@ -312,24 +313,35 @@ self.revDetailsWidget.setRepo(self.repo)
self.manifestDemand.forward('setRepo', self.repo)
+ def onPullCompleted(self):
+ if self.bundle:
+ # create a new bundlerepo instance; revision numbers may change
+ brepo = thgrepo.repository(self.repo.ui, self.repo.root,
+ bundle=self.bundle)
+ repo = thgrepo.repository(self.repo.ui, self.repo.root)
+ if len(repo) == len(brepo):
+ # all bundle revisions pulled
+ self.clearBundle()
+ self.reload()
+ else:
+ # refresh revset with remaining revisions
+ self.revset = range(len(repo), len(brepo))
+ self.repo = brepo
+ self.repoview.setRepo(brepo)
+ self.revDetailsWidget.setRepo(brepo)
+ self.manifestDemand.forward('setRepo', brepo)
+ self.reload()
+ self.repomodel.revset = self.revset
+ self.repoview.resetBrowseHistory(self.revset)
+ self._reload_rev = self.revset[0]
+
def acceptBundle(self):
self.taskTabsWidget.setCurrentIndex(self.syncTabIndex)
self.syncDemand.pullBundle(self.bundle, None)
- self.clearBundle()
def pullBundleToRev(self):
self.taskTabsWidget.setCurrentIndex(self.syncTabIndex)
self.syncDemand.pullBundle(self.bundle, self.rev)
- removed = [self.repo[self.rev]]
- while removed:
- ctx = removed.pop()
- if ctx.rev() in self.revset:
- self.revset.remove(ctx.rev())
- removed.extend(ctx.parents())
- self.repomodel.revset = self.revset
- if not self.revset:
- self.clearBundle()
- self.refresh()
def rejectBundle(self):
self.clearBundle()
|
@@ -56,6 +56,7 @@ outgoingNodes = pyqtSignal(object)
incomingBundle = pyqtSignal(QString)
showMessage = pyqtSignal(unicode)
+ pullCompleted = pyqtSignal()
output = pyqtSignal(QString, QString)
progress = pyqtSignal(QString, object, QString, QString, object)
@@ -721,6 +722,7 @@ self.showMessage.emit(_('Pull from %s completed') % urlu)
else:
self.showMessage.emit(_('Pull from %s aborted, ret %d') % (urlu, ret))
+ self.pullCompleted.emit()
# handle file conflicts during rebase
if self.opts.get('rebase'):
if os.path.exists(self.repo.join('rebasestate')):
@@ -755,9 +757,14 @@ urlu = hglib.tounicode(url)
self.showMessage.emit(_('Finding outgoing changesets to %s...') % urlu)
if self.embedded and not self.opts.get('subrepos'):
+ def verifyhash(hash):
+ if len(hash) != 40:
+ return False
+ bad = [c for c in hash if c not in '0123456789abcdef']
+ return not bad
def outputnodes(ret, data):
if ret == 0:
- nodes = [n for n in data.splitlines() if len(n) == 40]
+ nodes = [n for n in data.splitlines() if verifyhash(n)]
if nodes:
self.outgoingNodes.emit(nodes)
self.showMessage.emit(_('%d outgoing changesets to %s') %
|
@@ -18,7 +18,7 @@ <?define helpFolder.guid = {4B71277D-72E9-48F2-8A06-C706E9C3B4C0} ?>
<!-- i18n.wxs -->
- <?define i18nFolder.guid = {F88D7B07-D61C-4EE8-9BE0-B8CB6E8A52DB} ?>
+ <?define i18nFolder.guid = {5191051C-742F-470E-AD76-D83C2F1EDE4E} ?>
<!-- templates.wxs -->
<?define templates.root.guid = {6A82D0BF-6878-42F3-92FD-AB39F7A97EEF} ?>
@@ -43,7 +43,7 @@ <?define Icons.guid = {34369923-9610-461C-9FB3-26CA3A139836} ?>
<!-- thg-i18n.wxs -->
- <?define thgI18nFolder.guid = {55DC742A-1E22-4A6C-B090-FD1E91AB8646} ?>
+ <?define thgI18nFolder.guid = {BC570E20-FB79-49B8-AFEF-B4BB867EE60F} ?>
<!-- tortoisehg.wxs -->
<?define ProductUpgradeCode = {838657CF-C9EC-452D-800D-0E70FC021D0A} ?>
|
@@ -5,7 +5,7 @@ <?include defines.wxi ?>
<?define hg_po_langs =
- da;de;el;fr;it;ja;pt_BR;sv;zh_CN;zh_TW
+ da;de;el;fr;it;ja;pt_BR;ro;sv;zh_CN;zh_TW
?>
<Fragment>
|
@@ -5,7 +5,7 @@ <?include defines.wxi ?>
<?define thg_po_langs =
- cs;da;de;en_GB;es;fa;fr;he;hr;hu;it;ja;ko;nl;nn;oc;pl;pt;pt_BR;ru;sv;tr;uk;zh_CN;zh_TW
+ cs;da;de;en_AU;en_GB;es;et;fa;fr;he;hr;hu;it;ja;ko;nb;nl;nn;oc;pl;pt;pt_BR;ru;sr;sv;tr;uk;zh_CN;zh_TW
?>
<!-- lang 'ca' is used for key path -->
|
Loading...