Ich habe diesen Gist gefunden: https://Gist.github.com/kennethreitz/3709868
Ich benutze bitbucket und suche nach einer ähnlichen Funktion.
Kannst du mir helfen? Vielen Dank
Man kann den Code aus den Pull-Anfragen des Bitbucket Server abrufen mit:
git fetch Origin refs/pull-requests/$PR_NO/from:$LOCAL_BRANCH
Ich fand diese Antwort und dachte, dass es tatsächlich möglich war, Refs für eine Pull-Anfrage auf Bitbucket abzurufen.
ist es aber nicht.
Die Antwort auf die Frage des OP lautet:es ist NICHT möglich: Es gab ein Problem mit der Anforderung offener Funktionen , das unbeantwortet und unbeaufsichtigt war vierfünf SECHSJahre.
Die Problemumgehung?
Sie können die PR als .patch
-Datei herunterladen, die Sie herunterladen und auf einen neuen Zweig anwenden können, den Sie manuell erstellen. Sie können Updates jedoch nicht ohne weiteres anwenden.
Ich habe einen anderen Ausweg gefunden, den ich in git-repo implementiert habe, damit jeder es benutzen kann. Ich benutze die API, um die Remote- und Zweigstelle der PR abzurufen und automatisch eine neue Upstream- und Zweigstelle lokal zu erstellen. So erhalten Sie Updates vom PR-Poster. Der Nachteil ist das Durcheinander von Git-Fernbedienungen.
Ich folgte diesem Artikel Pullabruf .
Es hat funktioniert, aber ich habe herausgefunden, dass ich nur eine Zeile zum aktuellen Repo hinzufügen muss, anstatt ein Folk-Repo und ein Upstream-Repo zu erstellen. Führen Sie diese Zeile aus
git config --add remote.Origin.fetch '+refs/pull-requests/*/from:refs/remotes/Origin/pr/*'
Sie können es auch manuell zur Datei .git/config in Ihrem Projekt hinzufügen.
Beim nächsten Lauf git pull
sollte eine Liste angezeigt werden:
Dann können Sie git checkout Origin/pr/666
ausführen, um die Änderungen der Pull-Anforderung abzurufen.
Der einfachste Weg, dies zu tun, scheint immer noch ein Patch der Pull-Anfrage zu sein. Basierend auf dieser Frage ist die Antwort von Alexandre der einzige Weg, dies zu tun. Es verwendet dieses BitBucket-API call.
Ich habe das folgende Bash-Skript verwendet:
USER=username
PASSWORD=password
REPO=repo-name
PULL_NO=42
OUTPUT_FILE=output.patch
# Add -i to include the HTTP-header in the output for debugging
curl -u $USER:$PASSWORD https://bitbucket.org/api/2.0/repositories/$USER/$REPO/pullrequests/$PULL_NO/patch -L -o $OUTPUT_FILE
Speichern Sie das in einer Datei mit dem Namen pull-patch.sh
und geben Sie die Umgebungsvariablen mit Ihren Kontodetails ein. Das Skript erfordert, dass Sie curl
installiert haben (z. B. Sudo apt install curl
). Dann renne:
chmod +x pull-patch.sh
./pull-patch.sh
Eine Datei mit dem Namen output.patch
sollte aus der Pull-Anforderung erstellt werden.
Wenn die Pull-Anfrage nicht ausgecheckt werden kann, besteht der Trick darin, dass Sie das letzte Commit dieser Pull-Anfrage abchecken können
git checkout <hash code of last commit>
Dies funktioniert für Bitbucket. Andere Server könnten einen anderen refs:
( refspecs ) oder gar keinen refs:
haben.
Zunächst müssen Sie die Pull-Anforderung refs:
des Remote-Repositorys hinzufügen. Um dies mit einem Repository zu tun (z. B. Alias 'Upstream'):
git config --add remote.upstream.fetch '+refs/pull-requests/*/from:refs/remotes/upstream/pull-requests/*'
Das heißt, Sie fügen die letzte Zeile in git .config
-Datei hinzu:
[remote "Origin"]
url = ssh://[email protected]/~user/repository.git
fetch = +refs/heads/*:refs/remotes/Origin/*
fetch = +refs/pull/*/head:refs/remotes/Origin/pull-requests/*
Wenn Sie dann das entfernte fetch ausführen, sollten Sie (auch) alle Pull-Requests abrufen:
git fetch upstream
From ssh://git.blablabla.net/somepath/repository
* [new ref] refs/pull-requests/1188/from -> upstream/pull-requests/1188
* [new ref] refs/pull-requests/1741/from -> upstream/pull-requests/1741
* [new ref] refs/pull-requests/2394/from -> upstream/pull-requests/2394
Zum Schluss können Sie die gewünschte Pull-Anfrage auschecken:
git checkout pull-requests/2723
Erfolgreich getestet auf dediziertem Bitbucket-Server 27.02.19.