Opdatere lokale repositories med opdateringer fra de studerende
Jeg kan godt hente de studerendes besvarelser ned til en enkelt aflevering, men hvis jeg ønsker at hente besvarelserne ned igen (git fetch eller lign), så fejler det lige nu da der allerede er et git repository på destinationen. Se fejlbesked listet herunder.
Det kunne evt. løses ved at introducere en fetch_repositories
funktion.
In [13]: class_helper.clone_repositories(
...: repositories=list_of_repo_names['repository'],
...: local_path_to_fetch_to="assignment1/studentresponses/")
Working in group: 806 - test-emaip-1
---------------------------------------------------------------------------
GitCommandError Traceback (most recent call last)
<ipython-input-13-d6c52aa3263f> in <module>
1 class_helper.clone_repositories(
2 repositories=list_of_repo_names['repository'],
----> 3 local_path_to_fetch_to="assignment1/studentresponses/")
~/localbuild/gitlab-assignment-handler/gitlab_class_helper/gitlab_class_helper.py in clone_repositories(self, repositories, local_path_to_fetch_to, group_id)
179 local_path = os.path.join(local_path_to_fetch_to, repo)
180 repo_id = self.get_repo_id(repo, use_group_id)
--> 181 self.clone_repo(local_path, repo_id)
182 print('Cloned the repository "%s" to "%s"' % (repo, local_path))
183
~/localbuild/gitlab-assignment-handler/gitlab_class_helper/gitlab_class_helper.py in clone_repo(self, local_folder, project_id)
187 """
188 ssh_url_to_git_repo = self.get_project_ssh_url(project_id)
--> 189 git.Repo.clone_from(ssh_url_to_git_repo, local_folder)
190
191 def push_repositories(self, repositories: List[str], local_path: str, group_id: int = None):
~/localbuild/gitlab-assignment-handler/env/lib/python3.6/site-packages/git/repo/base.py in clone_from(cls, url, to_path, progress, env, multi_options, **kwargs)
1021 if env is not None:
1022 git.update_environment(**env)
-> 1023 return cls._clone(git, url, to_path, GitCmdObjectDB, progress, multi_options, **kwargs)
1024
1025 def archive(self, ostream, treeish=None, prefix=None, **kwargs):
~/localbuild/gitlab-assignment-handler/env/lib/python3.6/site-packages/git/repo/base.py in _clone(cls, git, url, path, odb_default_type, progress, multi_options, **kwargs)
962 (stdout, stderr) = proc.communicate()
963 log.debug("Cmd(%s)'s unused stdout: %s", getattr(proc, 'args', ''), stdout)
--> 964 finalize_process(proc, stderr=stderr)
965
966 # our git command could have a different working dir than our actual
~/localbuild/gitlab-assignment-handler/env/lib/python3.6/site-packages/git/util.py in finalize_process(proc, **kwargs)
330 """Wait for the process (clone, fetch, pull or push) and handle its errors accordingly"""
331 ## TODO: No close proc-streams??
--> 332 proc.wait(**kwargs)
333
334
~/localbuild/gitlab-assignment-handler/env/lib/python3.6/site-packages/git/cmd.py in wait(self, stderr)
412 errstr = read_all_from_possibly_closed_stream(self.proc.stderr)
413 log.debug('AutoInterrupt wait stderr: %r' % (errstr,))
--> 414 raise GitCommandError(self.args, status, errstr)
415 # END status handling
416 return status
GitCommandError: Cmd('git') failed due to: exit code(128)
cmdline: git clone -v git@source.coderefinery.org:sdu-uas-center/gitlab-experiments/test-emaip-1/hw1-henrikmidtibygmail.git assignment1/studentresponses/hw1-henrikmidtibygmail
stderr: 'fatal: destination path 'assignment1/studentresponses/hw1-henrikmidtibygmail' already exists and is not an empty directory.
'