我正在嘗試創建一個包含串列合并遠程release分支的腳本,這些分支在過去 6 個月內沒有任何更新,然后將其洗掉。
到目前為止,我一直在嘗試使用以下腳本執行串列分支部分:
import subprocess
import subprocess
import sys
import git
from git import Repo, repo
from git import Git
def get_merged_release_branches():
result_release = subprocess.getoutput("git branch -r --merged | grep release | sed 's#origin/##'")
return (result_release)
command = 'git log -1 --pretty=format:"%Cgreen%as" --before \\\'6 month ago'
for branch in get_merged_release_branches():
output = subprocess.Popen(command, universal_newlines=True, shell=True,stdout=subprocess.PIPE, stderr=subprocess.PIPE).communicate()
print(output)
但這似乎不起作用。黑屏就像迭代某些東西一樣。也不確定 withsubprocess.popen是否是最佳選擇。如果不是因為這個,最好的建議是什么?
還嘗試過:
output = subprocess.call(["git","log -1","--pretty=format:\\\"%Cgreen%as\\\ --before \\\'6 month ago'"])
但也沒有用。
我也知道你這里有 python 的 git,但不知道實作它的最佳方法。
uj5u.com熱心網友回復:
對于這樣一個簡單的作業流程,您可以通過幾次subprocess呼叫來實作這一點。
import subprocess
def get_merged_release_branches():
result_release = subprocess.getoutput("git branch -r --merged")
if "release" in result_release:
yield result_release
def is_release_branch_stale(branch_name):
commits_since_sixmonths = subprocess.getoutput(f"git log -1 {branch_name} --after '6 month ago'")
if commits_since_sixmonths is not None:
return True
return False
for branch in get_merged_release_branches():
if is_release_branch_stale(branch):
print(f"Branch {branch} is stale and can be deleted!")
這將列印所有過時的合并遠程分支(這對您來說意味著自六個月前沒有提交)。
您現在可以輕松添加另一種方法來從遠程洗掉分支:
def delete_stale_remote_branch(branch_name):
delete_status = subprocess.getoutput(f"git branch -d {branch_name}")
print(delete_status)
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/395517.html
