Changeset 30e0273a0503…
Parent 97af7374008c…
by
Changes to 2 files · Browse files at 30e0273a0503 Showing diff from parent 97af7374008c Diff from another changeset...
@@ -14,7 +14,7 @@ # this program; if not, write to the Free Software Foundation, Inc.,
# 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA.
-from tortoisehg.util import hglib
+from tortoisehg.util import hglib, patchctx
from tortoisehg.hgqt.qtlib import geticon
@@ -116,6 +116,21 @@ ctxfiles = self._ctx.files()
modified, added, removed = self._ctx.changesToParent(parent)
ismerge = bool(self._ctx.p2())
+
+ # Add the list of modified subrepos to the top of the list
+ if not isinstance(self._ctx, patchctx.patchctx):
+ from mercurial import subrepo
+ for s, sd in self._ctx.substate.items():
+ srev = self._ctx.substate.get(s, subrepo.nullstate)[1]
+ sp1rev = self._ctx.p1().substate.get(s, subrepo.nullstate)[1]
+ sp2rev = ''
+ if ismerge:
+ sp2rev = self._ctx.p2().substate.get(s, subrepo.nullstate)[1]
+ if srev != sp1rev or (sp2rev != '' and srev != sp2rev):
+ wasmerged = ismerge and s in ctxfiles
+ files.append({'path': s, 'status': 'S', 'parent': parent,
+ 'wasmerged': wasmerged})
+
if self._fulllist and ismerge:
func = lambda x: True
else:
@@ -163,6 +178,8 @@ return QVariant(geticon('fileadd'))
elif current_file_desc['status'] == 'R':
return QVariant(geticon('filedelete'))
+ elif current_file_desc['status'] == 'S':
+ return QVariant(geticon('hg'))
#else:
# return QVariant(geticon('filemodify'))
elif role == Qt.FontRole:
|
@@ -605,7 +605,25 @@ if status == 'S':
try:
from mercurial import subrepo, commands
- assert(ctx.rev() is None)
+
+ def genSubrepoRevChangedDescription(sfrom, sto):
+ """Generate a subrepository revision change description"""
+ out = []
+ opts = {'date':None, 'user':None, 'rev':[sfrom]}
+ if not sfrom:
+ out.append(_('Subrepo initialized to revision:') + u'\n\n')
+ else:
+ out.append(_('Revision has changed from:') + u'\n\n')
+ _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)
+ out.append(hglib.tounicode(_ui.popbuffer()))
+ return out
+
srev = ctx.substate.get(wfile, subrepo.nullstate)[1]
sub = ctx.sub(wfile)
if isinstance(sub, subrepo.hgsubrepo):
@@ -623,21 +641,29 @@ out.append(_('File Status:') + u'\n')
out.append(hglib.tounicode(data))
out.append(u'\n')
- if srev == '':
- out.append(_('New subrepository') + u'\n\n')
- elif srev != sactual:
- out.append(_('Revision has changed from:') + u'\n\n')
- opts = {'date':None, 'user':None, 'rev':[srev]}
- _ui.pushbuffer()
- commands.log(_ui, srepo, **opts)
- out.append(hglib.tounicode(_ui.popbuffer()))
- out.append(_('To:') + u'\n')
- opts['rev'] = [sactual]
- _ui.pushbuffer()
- commands.log(_ui, srepo, **opts)
- out.append(hglib.tounicode(_ui.popbuffer()))
+ sstatedesc = 'changed'
+ if ctx.rev() is not None:
+ sparent = ctx.p1().substate.get(wfile, subrepo.nullstate)[1]
+ out += genSubrepoRevChangedDescription(sparent, srev)
+ else:
+ sstatedesc = 'dirty'
+ if srev == '':
+ sstatedesc = 'new'
+ out.append(_('New subrepository') + u'\n\n')
+ elif srev != sactual:
+ sstatedesc = 'changed'
+ out.append(_('Revision has changed from:') + u'\n\n')
+ opts = {'date':None, 'user':None, 'rev':[srev]}
+ _ui.pushbuffer()
+ commands.log(_ui, srepo, **opts)
+ out.append(hglib.tounicode(_ui.popbuffer()))
+ out.append(_('To:') + u'\n')
+ opts['rev'] = [sactual]
+ _ui.pushbuffer()
+ commands.log(_ui, srepo, **opts)
+ out.append(hglib.tounicode(_ui.popbuffer()))
self.contents = u''.join(out)
- self.flabel += _(' <i>(is a dirty sub-repository)</i>')
+ self.flabel += _(' <i>(is a %s sub-repository)</i>' % sstatedesc)
lbl = u' <a href="subrepo:%s">%s...</a>'
self.flabel += lbl % (hglib.tounicode(srepo.root), _('open'))
except (EnvironmentError, error.RepoError, util.Abort), e:
|
Loading...