Mercurial > public > mercurial-scm > hg-stable
comparison mercurial/subrepo.py @ 46907:ffd3e823a7e5
urlutil: extract `url` related code from `util` into the new module
The new module is well fitting for this new code. And this will be useful to
make the gathered code collaborate more later.
Differential Revision: https://phab.mercurial-scm.org/D10374
author | Pierre-Yves David <pierre-yves.david@octobus.net> |
---|---|
date | Mon, 12 Apr 2021 03:01:04 +0200 |
parents | d4ba4d51f85f |
children | 0afe96e374a7 |
comparison
equal
deleted
inserted
replaced
46906:33524c46a092 | 46907:ffd3e823a7e5 |
---|---|
42 ) | 42 ) |
43 from .utils import ( | 43 from .utils import ( |
44 dateutil, | 44 dateutil, |
45 hashutil, | 45 hashutil, |
46 procutil, | 46 procutil, |
47 urlutil, | |
47 ) | 48 ) |
48 | 49 |
49 hg = None | 50 hg = None |
50 reporelpath = subrepoutil.reporelpath | 51 reporelpath = subrepoutil.reporelpath |
51 subrelpath = subrepoutil.subrelpath | 52 subrelpath = subrepoutil.subrelpath |
55 | 56 |
56 def _expandedabspath(path): | 57 def _expandedabspath(path): |
57 """ | 58 """ |
58 get a path or url and if it is a path expand it and return an absolute path | 59 get a path or url and if it is a path expand it and return an absolute path |
59 """ | 60 """ |
60 expandedpath = util.urllocalpath(util.expandpath(path)) | 61 expandedpath = urlutil.urllocalpath(util.expandpath(path)) |
61 u = util.url(expandedpath) | 62 u = urlutil.url(expandedpath) |
62 if not u.scheme: | 63 if not u.scheme: |
63 path = util.normpath(os.path.abspath(u.path)) | 64 path = util.normpath(os.path.abspath(u.path)) |
64 return path | 65 return path |
65 | 66 |
66 | 67 |
743 else: | 744 else: |
744 shareopts = {} | 745 shareopts = {} |
745 | 746 |
746 self.ui.status( | 747 self.ui.status( |
747 _(b'cloning subrepo %s from %s\n') | 748 _(b'cloning subrepo %s from %s\n') |
748 % (subrelpath(self), util.hidepassword(srcurl)) | 749 % (subrelpath(self), urlutil.hidepassword(srcurl)) |
749 ) | 750 ) |
750 peer = getpeer() | 751 peer = getpeer() |
751 try: | 752 try: |
752 other, cloned = hg.clone( | 753 other, cloned = hg.clone( |
753 self._repo._subparent.baseui, | 754 self._repo._subparent.baseui, |
763 self._initrepo(parentrepo, source, create=True) | 764 self._initrepo(parentrepo, source, create=True) |
764 self._cachestorehash(srcurl) | 765 self._cachestorehash(srcurl) |
765 else: | 766 else: |
766 self.ui.status( | 767 self.ui.status( |
767 _(b'pulling subrepo %s from %s\n') | 768 _(b'pulling subrepo %s from %s\n') |
768 % (subrelpath(self), util.hidepassword(srcurl)) | 769 % (subrelpath(self), urlutil.hidepassword(srcurl)) |
769 ) | 770 ) |
770 cleansub = self.storeclean(srcurl) | 771 cleansub = self.storeclean(srcurl) |
771 peer = getpeer() | 772 peer = getpeer() |
772 try: | 773 try: |
773 exchange.pull(self._repo, peer) | 774 exchange.pull(self._repo, peer) |
847 dsturl = _abssource(self._repo, True) | 848 dsturl = _abssource(self._repo, True) |
848 if not force: | 849 if not force: |
849 if self.storeclean(dsturl): | 850 if self.storeclean(dsturl): |
850 self.ui.status( | 851 self.ui.status( |
851 _(b'no changes made to subrepo %s since last push to %s\n') | 852 _(b'no changes made to subrepo %s since last push to %s\n') |
852 % (subrelpath(self), util.hidepassword(dsturl)) | 853 % (subrelpath(self), urlutil.hidepassword(dsturl)) |
853 ) | 854 ) |
854 return None | 855 return None |
855 self.ui.status( | 856 self.ui.status( |
856 _(b'pushing subrepo %s to %s\n') | 857 _(b'pushing subrepo %s to %s\n') |
857 % (subrelpath(self), util.hidepassword(dsturl)) | 858 % (subrelpath(self), urlutil.hidepassword(dsturl)) |
858 ) | 859 ) |
859 other = hg.peer(self._repo, {b'ssh': ssh}, dsturl) | 860 other = hg.peer(self._repo, {b'ssh': ssh}, dsturl) |
860 try: | 861 try: |
861 res = exchange.push(self._repo, other, force, newbranch=newbranch) | 862 res = exchange.push(self._repo, other, force, newbranch=newbranch) |
862 finally: | 863 finally: |
1282 # The revision must be specified at the end of the URL to properly | 1283 # The revision must be specified at the end of the URL to properly |
1283 # update to a directory which has since been deleted and recreated. | 1284 # update to a directory which has since been deleted and recreated. |
1284 args.append(b'%s@%s' % (state[0], state[1])) | 1285 args.append(b'%s@%s' % (state[0], state[1])) |
1285 | 1286 |
1286 # SEC: check that the ssh url is safe | 1287 # SEC: check that the ssh url is safe |
1287 util.checksafessh(state[0]) | 1288 urlutil.checksafessh(state[0]) |
1288 | 1289 |
1289 status, err = self._svncommand(args, failok=True) | 1290 status, err = self._svncommand(args, failok=True) |
1290 _sanitize(self.ui, self.wvfs, b'.svn') | 1291 _sanitize(self.ui, self.wvfs, b'.svn') |
1291 if not re.search(b'Checked out revision [0-9]+.', status): | 1292 if not re.search(b'Checked out revision [0-9]+.', status): |
1292 if b'is already a working copy for a different URL' in err and ( | 1293 if b'is already a working copy for a different URL' in err and ( |
1580 return _abssource(self) | 1581 return _abssource(self) |
1581 | 1582 |
1582 def _fetch(self, source, revision): | 1583 def _fetch(self, source, revision): |
1583 if self._gitmissing(): | 1584 if self._gitmissing(): |
1584 # SEC: check for safe ssh url | 1585 # SEC: check for safe ssh url |
1585 util.checksafessh(source) | 1586 urlutil.checksafessh(source) |
1586 | 1587 |
1587 source = self._abssource(source) | 1588 source = self._abssource(source) |
1588 self.ui.status( | 1589 self.ui.status( |
1589 _(b'cloning subrepo %s from %s\n') % (self._relpath, source) | 1590 _(b'cloning subrepo %s from %s\n') % (self._relpath, source) |
1590 ) | 1591 ) |