1

I am looking for a way to clone locally, a remote private git repository via python. Git i.e. not specific to a version control provider. Ideally I am looking to establish a connection with the remote repo(provider) using the credentials and then clone(emulate what would happen through bash) or just download the repo. This needs to happen via the python-script though. The credentials would be provided to the script as encoded arguments on console execution. Everything I have tried so far seems to have a quirk that does not solve the issue entirely.

  • This post seems to solve the issue of cloning a public repo(GitPython): https://stackoverflow.com/a/2472616/6599916
    Searching through stack and the GitPython documentation I haven't found a way to set authentication credentials through the GitPython library though. If anyone has implemented this it would be greatly appreciated.

  • Furthermore, in the past, I have implemented a version of this with a user prompt, but only for GitHub by employing requests to authenticate and then download the zip file of the remote repo. I can still use this, just for github.

    remoteReply = requests.get(remURL, timeout=20, auth=credentials)
    
  • Also, I tried this: https://github.community/t5/How-to-use-Git-and-GitHub/Clone-private-repo/td-p/12616
    which is still just for github. I would have tried a gitlab implemention but this yields errors when user password contains special characters like @. Is there a way to resolve this?

Finally, an implementation via the APIs of version control providers would be feasible if there existed a way to authenticate via username and password. All info regarding my issue circles around using sha or tokens which are not a solution in my case.

Nikos H.
  • 110
  • 9
  • I feel like the simplest approach would be using SSH keys, just load them in and do the clone and forget about username and passwords. If you must use username and passwords, I think you're going to have to build an implementation per-host-provider as they all implement it slightly differently. – Elliot Blackburn Jul 03 '19 at 16:31
  • @ElliotBlackburn these were my thoughts too...I just found out it's implemented in Java as jgit so it seems peculiar that there's no similar library in python – Nikos H. Jul 03 '19 at 16:58

0 Answers0