|
|
@@ -17,21 +17,24 @@ def oneliner(*args) -> str:
|
|
|
commit = oneliner('git', 'rev-parse', 'HEAD')
|
|
|
local_branch = oneliner('git', 'branch', '--show-current')
|
|
|
|
|
|
-tag = None
|
|
|
+tag = tracking_branch = None
|
|
|
if local_branch.startswith('tags/'):
|
|
|
tag = local_branch[5:]
|
|
|
if tag.endswith('^0'):
|
|
|
tag = tag[:-2]
|
|
|
remote_url = oneliner('git', 'config', 'remote.origin.url')
|
|
|
else:
|
|
|
- tracking_branch = oneliner('git', 'config', 'branch.%s.merge' % local_branch)
|
|
|
- if tracking_branch.startswith('refs/heads/'):
|
|
|
- tracking_branch = tracking_branch[len('refs/heads/'):]
|
|
|
- else:
|
|
|
- raise Exception("can't handle " + tracking_branch)
|
|
|
+ try:
|
|
|
+ tracking_branch = oneliner('git', 'config', 'branch.%s.merge' % local_branch)
|
|
|
+ if tracking_branch.startswith('refs/heads/'):
|
|
|
+ tracking_branch = tracking_branch[len('refs/heads/'):]
|
|
|
+ else:
|
|
|
+ raise Exception("can't handle " + tracking_branch)
|
|
|
|
|
|
- tracking_remote = oneliner('git', 'config', 'branch.%s.remote' % local_branch)
|
|
|
- remote_url = oneliner('git', 'config', 'remote.%s.url' % tracking_remote)
|
|
|
+ tracking_remote = oneliner('git', 'config', 'branch.%s.remote' % local_branch)
|
|
|
+ remote_url = oneliner('git', 'config', 'remote.%s.url' % tracking_remote)
|
|
|
+ except subprocess.CalledProcessError:
|
|
|
+ remote_url = oneliner('git', 'config', 'remote.origin.url')
|
|
|
|
|
|
relpath = oneliner('git', 'rev-parse', '--show-prefix')[:-1]
|
|
|
|
|
|
@@ -60,7 +63,7 @@ def url_for(treeish: str) -> str:
|
|
|
|
|
|
if tag is not None:
|
|
|
print(url_for(tag))
|
|
|
-else:
|
|
|
+elif tracking_branch is not None:
|
|
|
print(url_for(tracking_branch))
|
|
|
print(url_for(commit))
|
|
|
|