diff options
author | BoYanZh <32470225+BoYanZh@users.noreply.github.com> | 2020-10-07 03:03:06 +0800 |
---|---|---|
committer | BoYanZh <32470225+BoYanZh@users.noreply.github.com> | 2020-10-07 03:03:06 +0800 |
commit | 5e554f6b0495fa18767bd7f754c4d7d13a1cfa70 (patch) | |
tree | 38be7d6412ed2ca43239ed2fa72d081a9935045d | |
parent | 0393abd6c74b5e81206b6ae3e5e78b826c9794d6 (diff) |
update: git workflow: fetch & reset & clean
-rw-r--r-- | VG101GradeHelper.py | 9 | ||||
-rw-r--r-- | worker/GitWorker.py | 21 |
2 files changed, 15 insertions, 15 deletions
diff --git a/VG101GradeHelper.py b/VG101GradeHelper.py index 565dac2..a10c58f 100644 --- a/VG101GradeHelper.py +++ b/VG101GradeHelper.py @@ -15,7 +15,10 @@ def parse(): help='show this help message and exit') parser.add_argument('-h', '--hw', type=int, help='# homework') parser.add_argument('-p', '--proj', type=int, help='# project') - parser.add_argument('-f', '--feedback', type=int, help='give feedback to project') + parser.add_argument('-f', + '--feedback', + action='store_true', + help='give feedback to project') parser.add_argument('-m', '--ms', type=int, help='# milestone') parser.add_argument('-r', '--rejudge', @@ -86,6 +89,6 @@ if __name__ == "__main__": if args.proj: projScores = gitWorker.checkProj(args.proj, args.ms) if args.feedback: - giteaWorker = GiteaWorker(args, GITEA_BASE_URL, ORG_NAME, GITEA_TOKEN, - hgroups) + giteaWorker = GiteaWorker(args, GITEA_BASE_URL, ORG_NAME, + GITEA_TOKEN, hgroups) giteaWorker.raiseIssues(projScores) diff --git a/worker/GitWorker.py b/worker/GitWorker.py index 5519451..d53222c 100644 --- a/worker/GitWorker.py +++ b/worker/GitWorker.py @@ -1,4 +1,6 @@ from shutil import ignore_patterns, copytree, rmtree + +from git import exc from util import Logger, getProjRepoName import multiprocessing import traceback @@ -57,9 +59,7 @@ class GitWorker(): scores[stuName]['indvComment'].append( "individual branch individual branch missing") continue - repo.git.reset('--hard') - repo.git.rebase(f"origin/{stuID}") - repo.git.checkout(f"{stuID}") + repo.git.reset('--hard', f"origin/{stuID}") repo.git.clean("-d", "-f", "-x") self.logger.debug(f"{repoName} {stuID} {stuName} pull succeed") if self.args.dir: @@ -135,8 +135,6 @@ class GitWorker(): branch='master') else: repo = git.Repo(repoDir) - repo.git.reset('--hard') - repo.git.checkout("master", "-f") repo.git.fetch("--tags", "-f") tagNames = [tag.name for tag in repo.tags] scores = { @@ -154,8 +152,9 @@ class GitWorker(): scores[stuName]['groupComment'].append( f"tags/h{hwNum} missing") return scores - repo.git.reset('--hard') - repo.git.checkout(f"tags/h{hwNum}", "-f") + repo.git.reset('--hard', f"origin/master") + repo.git.clean("-d", "-f", "-x") + repo.git.checkout(f"tags/h{hwNum}") if not os.path.exists(hwDir): self.logger.warning(f"{repoName} h{hwNum} dir missing") for _, stuName in self.hgroups[repoName]: @@ -220,27 +219,25 @@ class GitWorker(): f"https://focs.ji.sjtu.edu.cn/git/vg101/{repoName}", repoDir) else: repo = git.Repo(os.path.join('projrepos', f'p{projNum}', repoName)) - repo.git.fetch() + repo.git.fetch('origin') remoteBranches = [ref.name for ref in repo.remote().refs] if 'origin/master' not in remoteBranches: self.logger.warning(f"{repoName} master branch missing") scores[stuName]["projComment"].append(f"master branch missing") return scores - repo.git.reset('--hard') - repo.git.rebase("origin/master") - repo.git.checkout("master") + repo.git.reset('--hard', 'origin/master') repo.git.clean("-d", "-f", "-x") if not list(filter(GitWorker.isREADME, os.listdir(repoDir))): self.logger.warning(f"{repoName} README file missing") scores[stuName]["projComment"].append(f"README file missing") if milestoneNum: + repo.git.fetch("--tags", "-f") tagNames = [tag.name for tag in repo.tags] if f"m{milestoneNum}" not in tagNames: self.logger.warning(f"{repoName} tags/m{milestoneNum} missing") scores[stuName]["projComment"].append( f"tags/m{milestoneNum} missing") return scores - repo.git.reset('--hard') repo.git.checkout(f"tags/m{milestoneNum}", "-f") self.logger.debug( f"{repoName} checkout to tags/m{milestoneNum} succeed") |