Эх сурвалжийг харах

git-url: handle unpushed branch

raylu 7 сар өмнө
parent
commit
254bbcf4a4
1 өөрчлөгдсөн 12 нэмэгдсэн , 9 устгасан
  1. 12 9
      git-url

+ 12 - 9
git-url

@@ -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))