From 4fcac8c5a4a09ada861946874eadd9078412f90b Mon Sep 17 00:00:00 2001 From: Pierre-Yves Chibon Date: Apr 14 2016 10:18:24 +0000 Subject: Drop the dedicated fork folder Instead of having a folder dedicated to forks, just place them in a `forks` folder under the main folders (repos, tickets, requests, docs...). This should help reducing the risk of conflicts with for example a project called `pingou/test` when there is already a fork of the project `test` by `pingou`. --- diff --git a/pagure/hooks/files/pagure_hook_requests.py b/pagure/hooks/files/pagure_hook_requests.py index 319e875..ccb69fc 100755 --- a/pagure/hooks/files/pagure_hook_requests.py +++ b/pagure/hooks/files/pagure_hook_requests.py @@ -88,7 +88,6 @@ def run_as_post_receive_hook(): request_uid=filename, json_data=json_data, gitfolder=pagure.APP.config['GIT_FOLDER'], - forkfolder=pagure.APP.config['FORK_FOLDER'], docfolder=pagure.APP.config['DOCS_FOLDER'], ticketfolder=pagure.APP.config['TICKETS_FOLDER'], requestfolder=pagure.APP.config['REQUESTS_FOLDER'], diff --git a/pagure/lib/__init__.py b/pagure/lib/__init__.py index 939303d..b15dfc0 100644 --- a/pagure/lib/__init__.py +++ b/pagure/lib/__init__.py @@ -1274,17 +1274,15 @@ def update_project_settings(session, repo, settings, user): def fork_project(session, user, repo, gitfolder, - forkfolder, docfolder, ticketfolder, requestfolder): + docfolder, ticketfolder, requestfolder): ''' Fork a given project into the user's forks. ''' - if repo.is_fork: - reponame = os.path.join(forkfolder, repo.path) - else: - reponame = os.path.join(gitfolder, repo.path) - forkreponame = '%s.git' % os.path.join(forkfolder, user, repo.name) + reponame = os.path.join(gitfolder, repo.path) + forkreponame = '%s.git' % os.path.join( + gitfolder, 'forks', user, repo.name) if os.path.exists(forkreponame): raise pagure.exceptions.RepoExistsException( - 'Repo "%s/%s" already exists' % (user, repo.name)) + 'Repo "forks/%s/%s" already exists' % (user, repo.name)) user_obj = __get_user(session, user) diff --git a/pagure/lib/git.py b/pagure/lib/git.py index e4ea3b2..c82726f 100644 --- a/pagure/lib/git.py +++ b/pagure/lib/git.py @@ -355,7 +355,7 @@ def get_user_from_json(session, jsondata, key='user'): def get_project_from_json( session, jsondata, - gitfolder, forkfolder, docfolder, ticketfolder, requestfolder): + gitfolder, docfolder, ticketfolder, requestfolder): """ From the given json blob, retrieve the project info and search for it in the db and create the projec if it does not already exist. """ @@ -373,13 +373,12 @@ def get_project_from_json( if jsondata.get('parent'): parent = get_project_from_json( session, jsondata.get('parent'), - gitfolder, forkfolder, docfolder, ticketfolder, requestfolder) + gitfolder, docfolder, ticketfolder, requestfolder) pagure.lib.fork_project( session=session, repo=parent, gitfolder=pagure.APP.config['GIT_FOLDER'], - forkfolder=pagure.APP.config['FORK_FOLDER'], docfolder=pagure.APP.config['DOCS_FOLDER'], ticketfolder=pagure.APP.config['TICKETS_FOLDER'], requestfolder=pagure.APP.config['REQUESTS_FOLDER'], @@ -393,7 +392,8 @@ def get_project_from_json( description=jsondata.get('description'), parent_id=parent.id if parent else None, blacklist=pagure.APP.config.get('BLACKLISTED_PROJECTS', []), - gitfolder=forkfolder if parent else gitfolder, + gitfolder=os.path.join(gitfolder, 'forks', user.username) + if parent else gitfolder, docfolder=docfolder, ticketfolder=ticketfolder, requestfolder=requestfolder, @@ -505,7 +505,7 @@ def update_ticket_from_git( def update_request_from_git( session, reponame, username, request_uid, json_data, - gitfolder, forkfolder, docfolder, ticketfolder, requestfolder): + gitfolder, docfolder, ticketfolder, requestfolder): """ Update the specified request (identified by its unique identifier) with the data present in the json blob provided. @@ -532,12 +532,12 @@ def update_request_from_git( if not request: repo_from = get_project_from_json( session, json_data.get('repo_from'), - gitfolder, forkfolder, docfolder, ticketfolder, requestfolder + gitfolder, docfolder, ticketfolder, requestfolder ) repo_to = get_project_from_json( session, json_data.get('project'), - gitfolder, forkfolder, docfolder, ticketfolder, requestfolder + gitfolder, docfolder, ticketfolder, requestfolder ) status = json_data.get('status') diff --git a/pagure/lib/model.py b/pagure/lib/model.py index b316b5a..f4a0441 100644 --- a/pagure/lib/model.py +++ b/pagure/lib/model.py @@ -326,7 +326,7 @@ class Project(BASE): ''' str_name = self.name if self.parent_id: - str_name = "%s/%s" % (self.user.user, str_name) + str_name = "forks/%s/%s" % (self.user.user, str_name) return str_name @property diff --git a/pagure/ui/fork.py b/pagure/ui/fork.py index 248036c..f3a635e 100644 --- a/pagure/ui/fork.py +++ b/pagure/ui/fork.py @@ -34,10 +34,6 @@ def _get_parent_repo_path(repo): """ if repo.parent: parentpath = os.path.join(APP.config['GIT_FOLDER'], repo.parent.path) - if repo.parent.is_fork: - parentpath = os.path.join(APP.config['FORK_FOLDER'], repo.parent.path) - elif repo.is_fork: - parentpath = os.path.join(APP.config['FORK_FOLDER'], repo.path) else: parentpath = os.path.join(APP.config['GIT_FOLDER'], repo.path) @@ -859,7 +855,6 @@ def fork_project(repo, username=None): session=SESSION, repo=repo, gitfolder=APP.config['GIT_FOLDER'], - forkfolder=APP.config['FORK_FOLDER'], docfolder=APP.config['DOCS_FOLDER'], ticketfolder=APP.config['TICKETS_FOLDER'], requestfolder=APP.config['REQUESTS_FOLDER'], diff --git a/pagure/ui/repo.py b/pagure/ui/repo.py index d6f0fea..9862de2 100644 --- a/pagure/ui/repo.py +++ b/pagure/ui/repo.py @@ -104,9 +104,6 @@ def view_repo(repo, username=None): if repo.is_fork: parentname = os.path.join( APP.config['GIT_FOLDER'], repo.parent.path) - if repo.parent.is_fork: - parentname = os.path.join( - APP.config['FORK_FOLDER'], repo.parent.path) else: parentname = os.path.join(APP.config['GIT_FOLDER'], repo.path) @@ -184,12 +181,10 @@ def view_repo_branch(repo, branchname, username=None): break diff_commits = [] + if repo.is_fork: parentname = os.path.join( APP.config['GIT_FOLDER'], repo.parent.path) - if repo.parent.is_fork: - parentname = os.path.join( - APP.config['FORK_FOLDER'], repo.parent.path) else: parentname = os.path.join(APP.config['GIT_FOLDER'], repo.path) @@ -314,9 +309,6 @@ def view_commits(repo, branchname=None, username=None): if repo.is_fork: parentname = os.path.join( APP.config['GIT_FOLDER'], repo.parent.path) - if repo.parent.is_fork: - parentname = os.path.join( - APP.config['FORK_FOLDER'], repo.parent.path) else: parentname = os.path.join(APP.config['GIT_FOLDER'], repo.path)