comparison mercurial/subrepo.py @ 23523:01a8dfc79cdc

subrepo: add partial diff support for git subrepos So far, git subrepositories were silently ignored for diffs. This patch adds support for git subrepositories, with the remark that --include and --exclude are not supported. If --include or --exclude are used, the subrepo is ignored.
author Mathias De Mar? <mathias.demare@gmail.com>
date Wed, 10 Dec 2014 10:32:51 +0100
parents 49a58b33d1ce
children fcbc66b5da6a
comparison
equal deleted inserted replaced
23522:49a58b33d1ce 23523:01a8dfc79cdc
1591 unknown.append(line) 1591 unknown.append(line)
1592 1592
1593 return scmutil.status(modified, added, removed, deleted, 1593 return scmutil.status(modified, added, removed, deleted,
1594 unknown, ignored, clean) 1594 unknown, ignored, clean)
1595 1595
1596 @annotatesubrepoerror
1597 def diff(self, ui, diffopts, node2, match, prefix, **opts):
1598 node1 = self._state[1]
1599 cmd = ['diff']
1600 if opts['stat']:
1601 cmd.append('--stat')
1602 else:
1603 # for Git, this also implies '-p'
1604 cmd.append('-U%d' % diffopts.context)
1605
1606 gitprefix = os.path.join(prefix, self._path)
1607
1608 if diffopts.noprefix:
1609 cmd.extend(['--src-prefix=%s/' % gitprefix,
1610 '--dst-prefix=%s/' % gitprefix])
1611 else:
1612 cmd.extend(['--src-prefix=a/%s/' % gitprefix,
1613 '--dst-prefix=b/%s/' % gitprefix])
1614
1615 if diffopts.ignorews:
1616 cmd.append('--ignore-all-space')
1617 if diffopts.ignorewsamount:
1618 cmd.append('--ignore-space-change')
1619 if self._gitversion(self._gitcommand(['--version'])) >= (1, 8, 4) \
1620 and diffopts.ignoreblanklines:
1621 cmd.append('--ignore-blank-lines')
1622
1623 cmd.append(node1)
1624 if node2:
1625 cmd.append(node2)
1626
1627 if match.anypats():
1628 return #No support for include/exclude yet
1629
1630 if match.always():
1631 ui.write(self._gitcommand(cmd))
1632 elif match.files():
1633 for f in match.files():
1634 ui.write(self._gitcommand(cmd + [f]))
1635 elif match(gitprefix): #Subrepo is matched
1636 ui.write(self._gitcommand(cmd))
1637
1596 def shortid(self, revid): 1638 def shortid(self, revid):
1597 return revid[:7] 1639 return revid[:7]
1598 1640
1599 types = { 1641 types = {
1600 'hg': hgsubrepo, 1642 'hg': hgsubrepo,