Bonjour,
J' essaye de faire un push avec la bibliothèque libgit. J'utilise le binding pygit.
J'ai essayé de nombreux codes mais rien ne fonctionne.
Les erreurs sont 401 pas enregistré, rien => mais pas de modification en ligne.
J'ai vérifié mon dépôt local et les modifications ont été faites.
Je n'ai plus d’idées …
Voici mon code :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 | ## ajoute un fichier def addFile(request, pk=None): repository = get_object_or_404(Repository, pk=pk) if request.method == 'POST': form = AddFileForm(request.POST, request.FILES) if form.is_valid(): message = form.cleaned_data['comment'] file = request.FILES['file'] branch = form.cleaned_data['branch'] reference = 'refs/heads/master' temporary_folder = tempfile.mkdtemp() print(temporary_folder) cred = pygit2.UserPass('login', 'password') repo = pygit2.clone_repository('https://gitlab.com/login/rrrr.git', temporary_folder, bare=False, credentials=cred) with open(temporary_folder+'/'+file.name, 'wb+') as file_media: file_media.write(file.read()) index = repo.index index.add_all() index.write() author = pygit2.Signature('admin', 'admin@admin.fr') commiter = pygit2.Signature('admin', 'admin@admin.fr') tree = index.write_tree() oid = repo.create_commit(reference, author, commiter, message,tree,[repo.head.get_object().hex]) all_refs = repo.listall_references() remote = repo.remotes[0] remote.credentials = cred remote.add_push('refs/heads/master') remote.push_url = 'https://login:password@gitlab.com/login/rrrr.git' signature = pygit2.Signature('login', 'password') #remote.push(all_refs[1], signature, message) remote.push_refspecs else: form = AddFileForm(initial={}) return render(request, 'repository/addFile.html', {'form': form, 'repository': repository,}) |
+0
-0