|
@@ -5,6 +5,7 @@ from api.utils.command import list_files_and_folders
|
|
|
from git.repo.base import Repo
|
|
|
from git.repo.fun import is_git_dir
|
|
|
from git.util import join_path
|
|
|
+from git.exc import GitCommandError
|
|
|
|
|
|
'''
|
|
|
'''
|
|
@@ -34,6 +35,44 @@ def get_repos_paths():
|
|
|
|
|
|
return repos
|
|
|
|
|
|
+'''
|
|
|
+'''
|
|
|
+def resolve_owner_by_name(name=None):
|
|
|
+ if not name:
|
|
|
+ return None
|
|
|
+
|
|
|
+ path = [r for r in get_odoo_modules_repos_paths() if '%s.git' % name in r]
|
|
|
+
|
|
|
+ if len(path) == 0:
|
|
|
+ return None
|
|
|
+
|
|
|
+ return path[0].replace('%s/' % settings.GIT_PATH, '').replace('/%s.git' % name, '')
|
|
|
+
|
|
|
+
|
|
|
+'''
|
|
|
+'''
|
|
|
+def clone_repo(name=None, to=None, branch='master'):
|
|
|
+ if not name or not to:
|
|
|
+ return False
|
|
|
+
|
|
|
+ owner = resolve_owner_by_name(name)
|
|
|
+ repo_path = '%s.git' % join_path(settings.GIT_PATH, owner, name)
|
|
|
+
|
|
|
+ try:
|
|
|
+ repo = Repo(repo_path)
|
|
|
+ repo.clone(join_path(to, name), branch=branch)
|
|
|
+ repo.close()
|
|
|
+
|
|
|
+ return True
|
|
|
+ except GitCommandError:
|
|
|
+ return False
|
|
|
+
|
|
|
+'''
|
|
|
+'''
|
|
|
+def pull_repo(name=None, to=None):
|
|
|
+ if not name or not to:
|
|
|
+ return False
|
|
|
+
|
|
|
'''
|
|
|
'''
|
|
|
def get_odoo_modules_repos_paths():
|
|
@@ -60,10 +99,18 @@ def get_odoo_modules_repos_names(include_owners=False):
|
|
|
repos_names = []
|
|
|
|
|
|
for repos_path in repos_paths:
|
|
|
- last_slash_index = repos_path.rindex('/')
|
|
|
- last_dot_index = repos_path.rindex('.')
|
|
|
+ repo_with_user = repos_path.replace('%s/' % settings.GIT_PATH, '')
|
|
|
+ repo_with_user = repo_with_user.split('/')
|
|
|
+
|
|
|
+ repo_with_user[1] = repo_with_user[1].replace('.git', '')
|
|
|
+
|
|
|
+ if not include_owners:
|
|
|
+ repos_names.append(repo_with_user[1])
|
|
|
+ continue
|
|
|
|
|
|
- name = repos_path[last_slash_index + 1:last_dot_index]
|
|
|
- repos_names.append(name)
|
|
|
+ repos_names.append({
|
|
|
+ 'name': repo_with_user[1],
|
|
|
+ 'owner': repo_with_user[0]
|
|
|
+ })
|
|
|
|
|
|
return repos_names
|