controller.py 5.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162
  1. # -*- coding: <encoding name> -*-
  2. from gitrepo.template import GitRepo, CloneGit
  3. class GitCtrol:
  4. def __init__(self):
  5. self.git_dict = {} # 名字-文件位置
  6. self.git_type_dict = {} # 名字-类型
  7. def open_repo(self, repo_dir, **kwargs):
  8. git = GitRepo(repo_dir)
  9. self.git_dict[git.name] = git
  10. self.git_type_dict[git.name] = "init"
  11. return git.name
  12. def clone_repo(self, repo_dir, **kwargs):
  13. git = CloneGit(repo_dir)
  14. self.git_dict[git.name] = git
  15. self.git_type_dict[git.name] = "clone"
  16. return git.name
  17. def get_git(self, name):
  18. return self.git_dict[name]
  19. def get_git_dict(self):
  20. return self.git_dict.copy()
  21. def get_dir(self, name):
  22. return self.get_git(name).dir_list()
  23. def add_file(self, name, file_list):
  24. return self.get_git(name).add(file_list)
  25. def del_cached_file(self, name, file_list):
  26. return self.get_git(name).del_cached_file(file_list) # 移除出去暂存区
  27. def commit_file(self, name, message):
  28. return self.get_git(name).commit_file(message)
  29. def log(self, name, graph, pretty, abbrev):
  30. return self.get_git(name).log(graph, pretty, abbrev)
  31. def do_log(self, name):
  32. return self.get_git(name).do_log()
  33. def status(self, name):
  34. return self.get_git(name).status()
  35. def diff_file(self, name, brach):
  36. return self.get_git(name).diff(brach)
  37. def back_version(self, name, head, reset_type=0):
  38. return self.get_git(name).reset(head, reset_type) # 版本回退HEAD
  39. def back_version_file(self, name, head, file_list):
  40. return self.get_git(name).reset_file(head, file_list) # 文件回退
  41. def checkout_version(self, name, file):
  42. return self.get_git(name).checkout(file) # 弹出
  43. def rm(self, name, file):
  44. return self.get_git(name).rm(file)
  45. def branch_view(self, name):
  46. return self.get_git(name).branch_view()
  47. def new_branch(self, name, new_branch, origin):
  48. return self.get_git(name).new_branch(new_branch, origin)
  49. def switch_branch(self, name, branch_name):
  50. return self.get_git(name).switch_branch(branch_name)
  51. def del_branch(self, name, branch_name, type_):
  52. d = {1: "d", 0: "D"}.get(type_, "d")
  53. return self.get_git(name).del_branch(branch_name, d)
  54. def merge_branch(self, name, branch_name, no_ff, m):
  55. return self.get_git(name).merge_branch(branch_name, no_ff, m)
  56. def merge_abort(self, name):
  57. return self.get_git(name).merge_abort()
  58. def save_stash(self, name):
  59. return self.get_git(name).save_stash()
  60. def stash_list(self, name):
  61. return self.get_git(name).get_stash_list()
  62. def apply_stash(self, name, stash_num="0"):
  63. return self.get_git(name).apply_stash(stash_num)
  64. def drop_stash(self, name, stash_num="0"):
  65. return self.get_git(name).drop_stash(stash_num)
  66. def cherry_pick(self, name, commit):
  67. return self.get_git(name).cherry_pick(commit)
  68. def del_remote(self, name, remote_name):
  69. return self.get_git(name).del_remote(remote_name)
  70. def remote_add(self, name, remote, remote_name):
  71. return self.get_git(name).remote_add(remote, remote_name)
  72. def bind_branch(self, name, local_name, remote_name):
  73. return self.get_git(name).bind_branch(local_name, remote_name)
  74. def pull_from_remote(
  75. self, name, local_name, remote_name, remote_branch, allow=False, u=False
  76. ):
  77. return self.get_git(name).pull_push(
  78. 0, remote_name, remote_branch, local_name, allow, u, False
  79. )
  80. def push_to_remote(
  81. self, name, local_name, remote_name, remote_branch, u=False, f=False
  82. ):
  83. return self.get_git(name).pull_push(
  84. 1, remote_name, remote_branch, local_name, False, u, f
  85. ) # push没有allow选项
  86. def tag(self, name, condition=""):
  87. return self.get_git(name).get_tag_list(condition) # push没有allow选项
  88. def show_new(self, name, condition):
  89. return self.get_git(name).search_commit(condition) # push没有allow选项
  90. def add_tag(self, name, tag, commit, message=""):
  91. return self.get_git(name).add_tag(tag, commit, message) # push没有allow选项
  92. def push_tag(self, name, tag, remoto):
  93. return self.get_git(name).push_tag(tag, remoto)
  94. def push_all_tag(self, name, remoto):
  95. return self.get_git(name).push_tag("--tags", remoto)
  96. def del_tag_remote(self, name, remote, tag):
  97. return self.get_git(name).del_tag_remote(remote, tag)
  98. def del_branch_remote(self, name, remote, remote_branch):
  99. return self.get_git(name).del_branch_remote(remote, remote_branch)
  100. def del_tag(self, name, tag):
  101. return self.get_git(name).del_tag(tag)
  102. def fetch(self, name, local_name, remote_name, remote_branch):
  103. return self.get_git(name).fetch(remote_name, remote_branch, local_name)
  104. def customize_command(self, name, command: str):
  105. return self.get_git(name).customize_command(command)
  106. def clone(self, name, url):
  107. return self.get_git(name).clone(url)
  108. def after_clone(self, name):
  109. return self.get_git(name).after_clone()
  110. def make_dir(self, name, dir_):
  111. return self.get_git(name).make_dir(dir_)
  112. def rename_branch(self, name, old_name, new_name):
  113. return self.get_git(name).rename_branch(old_name, new_name)