Show More
@@ -314,8 +314,12 b' def _abssource(repo, push=False, abort=T' | |||
|
314 | 314 | if abort: |
|
315 | 315 | raise util.Abort(_("default path for subrepository not found")) |
|
316 | 316 | |
|
317 | def _sanitize(ui, path): | |
|
317 | def _sanitize(ui, path, ignore): | |
|
318 | 318 | for dirname, dirs, names in os.walk(path): |
|
319 | for i, d in enumerate(dirs): | |
|
320 | if d.lower() == ignore: | |
|
321 | del dirs[i] | |
|
322 | break | |
|
319 | 323 | if os.path.basename(dirname).lower() != '.hg': |
|
320 | 324 | continue |
|
321 | 325 | for f in names: |
@@ -1050,7 +1054,7 b' class svnsubrepo(abstractsubrepo):' | |||
|
1050 | 1054 | # update to a directory which has since been deleted and recreated. |
|
1051 | 1055 | args.append('%s@%s' % (state[0], state[1])) |
|
1052 | 1056 | status, err = self._svncommand(args, failok=True) |
|
1053 | _sanitize(self._ui, self._ctx._repo.wjoin(self._path)) | |
|
1057 | _sanitize(self._ui, self._ctx._repo.wjoin(self._path), '.svn') | |
|
1054 | 1058 | if not re.search('Checked out revision [0-9]+.', status): |
|
1055 | 1059 | if ('is already a working copy for a different URL' in err |
|
1056 | 1060 | and (self._wcchanged()[:2] == (False, False))): |
@@ -1343,7 +1347,7 b' class gitsubrepo(abstractsubrepo):' | |||
|
1343 | 1347 | self._gitcommand(['reset', 'HEAD']) |
|
1344 | 1348 | cmd.append('-f') |
|
1345 | 1349 | self._gitcommand(cmd + args) |
|
1346 | _sanitize(self._ui, self._abspath) | |
|
1350 | _sanitize(self._ui, self._abspath, '.git') | |
|
1347 | 1351 | |
|
1348 | 1352 | def rawcheckout(): |
|
1349 | 1353 | # no branch to checkout, check it out with no branch |
@@ -1392,7 +1396,7 b' class gitsubrepo(abstractsubrepo):' | |||
|
1392 | 1396 | if tracking[remote] != self._gitcurrentbranch(): |
|
1393 | 1397 | checkout([tracking[remote]]) |
|
1394 | 1398 | self._gitcommand(['merge', '--ff', remote]) |
|
1395 | _sanitize(self._ui, self._abspath) | |
|
1399 | _sanitize(self._ui, self._abspath, '.git') | |
|
1396 | 1400 | else: |
|
1397 | 1401 | # a real merge would be required, just checkout the revision |
|
1398 | 1402 | rawcheckout() |
@@ -1428,7 +1432,7 b' class gitsubrepo(abstractsubrepo):' | |||
|
1428 | 1432 | self.get(state) # fast forward merge |
|
1429 | 1433 | elif base != self._state[1]: |
|
1430 | 1434 | self._gitcommand(['merge', '--no-commit', revision]) |
|
1431 | _sanitize(self._ui, self._abspath) | |
|
1435 | _sanitize(self._ui, self._abspath, '.git') | |
|
1432 | 1436 | |
|
1433 | 1437 | if self.dirty(): |
|
1434 | 1438 | if self._gitstate() != revision: |
@@ -658,4 +658,13 b' additional test for "git merge --ff" rou' | |||
|
658 | 658 | $ cat s/sub/.hg/hgrc |
|
659 | 659 | cat: s/sub/.hg/hgrc: No such file or directory |
|
660 | 660 | [1] |
|
661 | ||
|
662 | Test that sanitizing is omitted in meta data area: | |
|
663 | ||
|
664 | $ mkdir s/.git/.hg | |
|
665 | $ echo '.hg/hgrc in git metadata area' > s/.git/.hg/hgrc | |
|
666 | $ hg update -q -C af6d2edbb0d3 | |
|
667 | checking out detached HEAD in subrepo s | |
|
668 | check out a git branch if you intend to make changes | |
|
669 | ||
|
661 | 670 | $ cd .. |
@@ -676,4 +676,10 b' Test sanitizing ".hg/hgrc" in subrepo' | |||
|
676 | 676 | cat: s/sub/.hg/hgrc: No such file or directory |
|
677 | 677 | [1] |
|
678 | 678 | |
|
679 | Test that sanitizing is omitted in meta data area: | |
|
680 | ||
|
681 | $ mkdir s/.svn/.hg | |
|
682 | $ echo '.hg/hgrc in svn metadata area' > s/.svn/.hg/hgrc | |
|
683 | $ hg update -q -C '.^1' | |
|
684 | ||
|
679 | 685 | $ cd ../.. |
General Comments 0
You need to be logged in to leave comments.
Login now