From patchwork Mon Dec 25 09:57:53 2017 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit Subject: D1755: logexchange: introduce helper function to get remote path name From: phabricator X-Patchwork-Id: 26429 Message-Id: To: mercurial-devel@mercurial-scm.org Date: Mon, 25 Dec 2017 09:57:53 +0000 pulkit created this revision. Herald added a subscriber: mercurial-devel. Herald added a reviewer: hg-reviewers. REVISION SUMMARY This patch moves chunk of activepath function from hgremotenames extension (linktoremotenameextension) to core. Before moving rest of the part, there needs to be some refactoring done to schemes which will be done in as a separate series. REPOSITORY rHG Mercurial REVISION DETAIL https://phab.mercurial-scm.org/D1755 AFFECTED FILES mercurial/logexchange.py tests/test-logexchange.t CHANGE DETAILS To: pulkit, #hg-reviewers Cc: mercurial-devel diff --git a/tests/test-logexchange.t b/tests/test-logexchange.t --- a/tests/test-logexchange.t +++ b/tests/test-logexchange.t @@ -57,14 +57,14 @@ $ cat .hg/logexchange/bookmarks 0 - 87d6d66763085b629e6d7ed56778c79827273022\x00file:$TESTTMP/server\x00bar (esc) - 62615734edd52f06b6fb9c2beb429e4fe30d57b8\x00file:$TESTTMP/server\x00foo (esc) + 87d6d66763085b629e6d7ed56778c79827273022\x00$TESTTMP/server\x00bar (esc) + 62615734edd52f06b6fb9c2beb429e4fe30d57b8\x00$TESTTMP/server\x00foo (esc) $ cat .hg/logexchange/branches 0 - ec2426147f0e39dbc9cef599b066be6035ce691d\x00file:$TESTTMP/server\x00default (esc) - 3e1487808078543b0af6d10dadf5d46943578db0\x00file:$TESTTMP/server\x00wat (esc) + ec2426147f0e39dbc9cef599b066be6035ce691d\x00$TESTTMP/server\x00default (esc) + 3e1487808078543b0af6d10dadf5d46943578db0\x00$TESTTMP/server\x00wat (esc) Making a new server ------------------- @@ -94,15 +94,15 @@ $ cat .hg/logexchange/bookmarks 0 - 62615734edd52f06b6fb9c2beb429e4fe30d57b8\x00file:$TESTTMP/server\x00foo (esc) - 87d6d66763085b629e6d7ed56778c79827273022\x00file:$TESTTMP/server\x00bar (esc) - 87d6d66763085b629e6d7ed56778c79827273022\x00file:$TESTTMP/server2\x00bar (esc) - 62615734edd52f06b6fb9c2beb429e4fe30d57b8\x00file:$TESTTMP/server2\x00foo (esc) + 62615734edd52f06b6fb9c2beb429e4fe30d57b8\x00$TESTTMP/server\x00foo (esc) + 87d6d66763085b629e6d7ed56778c79827273022\x00$TESTTMP/server\x00bar (esc) + 87d6d66763085b629e6d7ed56778c79827273022\x00$TESTTMP/server2\x00bar (esc) + 62615734edd52f06b6fb9c2beb429e4fe30d57b8\x00$TESTTMP/server2\x00foo (esc) $ cat .hg/logexchange/branches 0 - 3e1487808078543b0af6d10dadf5d46943578db0\x00file:$TESTTMP/server\x00wat (esc) - ec2426147f0e39dbc9cef599b066be6035ce691d\x00file:$TESTTMP/server\x00default (esc) - ec2426147f0e39dbc9cef599b066be6035ce691d\x00file:$TESTTMP/server2\x00default (esc) - 3e1487808078543b0af6d10dadf5d46943578db0\x00file:$TESTTMP/server2\x00wat (esc) + 3e1487808078543b0af6d10dadf5d46943578db0\x00$TESTTMP/server\x00wat (esc) + ec2426147f0e39dbc9cef599b066be6035ce691d\x00$TESTTMP/server\x00default (esc) + ec2426147f0e39dbc9cef599b066be6035ce691d\x00$TESTTMP/server2\x00default (esc) + 3e1487808078543b0af6d10dadf5d46943578db0\x00$TESTTMP/server2\x00wat (esc) diff --git a/mercurial/logexchange.py b/mercurial/logexchange.py --- a/mercurial/logexchange.py +++ b/mercurial/logexchange.py @@ -94,14 +94,39 @@ finally: wlock.release() +def activepath(remote): + """returns remote path""" + local = None + try: + local = remote.local() + except AttributeError: + pass + + # determine the remote path from the repo, if possible; else just + # use the string given to us + rpath = remote + if local: + rpath = getattr(remote, 'root', None) + if rpath is None: + # Maybe a localpeer? (hg@1ac628cd7113, 2.3) + rpath = getattr(getattr(remote, '_repo', None), + 'root', None) + elif not isinstance(remote, str): + try: + rpath = remote._url + except AttributeError: + rpath = remote.url + + return rpath + def pullremotenames(localrepo, remoterepo): """ pulls bookmarks and branches information of the remote repo during a pull or clone operation. localrepo is our local repository remoterepo is the peer instance """ - remotepath = remoterepo.url() + remotepath = activepath(remoterepo) bookmarks = remoterepo.listkeys('bookmarks') # on a push, we don't want to keep obsolete heads since # they won't show up as heads on the next pull, so we