Ist es möglich, ein neues Repository in Bitbucket mithilfe der Befehlszeile Git zu erstellen? Ich habe folgendes versucht:
git clone --bare https://username[email protected]/username/new_project.git
Ich erhalte diese Nachricht:
Klonen in das leere Repository 'new_project.git' ...
fatal:https://[email protected]/username/new_project.git/info/refs
nicht gefunden: Haben Sie git Update-Server-Info auf dem Server ausgeführt?
Es wäre schön, dies ohne die Web-App zu tun.
Sie können die Bitbucket REST - API und cURL verwenden. Zum Beispiel:
curl --user login:pass https://api.bitbucket.org/1.0/repositories/ \
--data name=REPO_NAME
um ein neues Repository mit dem Namen REPO_NAME
zu erstellen.
Weitere Informationen finden Sie unter Verwenden Sie die Bitbucket REST - APIs .
AKTUALISIEREN
Speziell für Bitbucket V2 siehe POST ein neues Repo
In jüngerer Zeit können wir einfach bitbucket-cli
verwenden.
Installieren Sie es mit pip
pip install bitbucket-cli
Dann erstellen Sie ein Repo mit
bitbucket create --private --protocol ssh --scm git YOUR_REPO_NAME
Beachten Sie, dass dies ein privates Git-Repo erstellt. Sie können --public
für den öffentlichen Zugriff und --scm hg
verwenden, wenn Sie Mercurial verwenden. Benutzername Argument kann über --username YOUR_USER_NAME
hinzugefügt werden.
Hier ist @ hannesrs Skript ein bisschen angepasst, um Eingaben von Eingabeaufforderungen zu akzeptieren:
# startbitbucket - creates remote bitbucket repo and adds it as git remote to cwd
function startbitbucket {
echo 'Username?'
read username
echo 'Password?'
read -s password # -s flag hides password text
echo 'Repo name?'
read reponame
curl --user $username:$password \
https://api.bitbucket.org/1.0/repositories/ \
--data name=$reponame \
--data is_private='true'
git remote add Origin [email protected]:$username/$reponame.git
git Push -u Origin --all
git Push -u Origin --tags
}
Sie sollten dies in Ihren .bashrc
oder .bash_aliases
einfügen.
https://confluence.atlassian.com/bitbucket/repository-resource-423626331.html
$ curl -X POST -v -u username:password -H "Content-Type: application/json" \
https://api.bitbucket.org/2.0/repositories/teamsinspace/new-repository4 \
-d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks" }'
Ich habe ein schnelles Shell-Skript erstellt, das sich um die Erstellung eines lokalen Git im aktuellen Arbeitsverzeichnis kümmert, das "Initial Commit" durchführt und dann das Bitbucket-Repo (unter Verwendung der Mareks-Curl-Methode) erstellt verpflichten sich zu bitbucket.
(Beachten Sie, dass dies nur für private Repos gilt, dies kann jedoch leicht geändert werden, wie von Patrick beschrieben.)
Verwenden Sie es so:
fillbucket <user> <password> <reponame>
Code steht auf http://bitbucket.org/hannesr/fillbucket
Hier ist der Einzeiliger zum Kopieren/Einfügen von Bonbons:
# This is Git's per-user configuration file.
[alias]
create = "!f() { curl -X POST -u YOUR_EMAIL_ADDRESS -H 'Content-Type: application/x-www-form-urlencoded' https://api.bitbucket.org/2.0/repositories/YOUR_USERNAME_OR_TEAM_NAME/$1 -d '{\"is_private\": \"true\", \"scm\": \"git\", \"project\": \"KEY_OF_PROJECT\"}' | jq '.links.clone[].href'; }; f"
HINWEIS: Sie sollten update Konstanten mit Ihren Informationen verwenden.
Auf diese Weise wird Ihr Passwort nicht in Ihrem .bash_history gespeichert.
Es muss ein Einzeiler sein, der in Ihre ~/.gitconfig
-Datei passt.
Usage
git create <repository_name>
Dies gibt entweder null oder Ihre neu erstellte Repository-Adressen zurück.
Sie können den jq-Part entfernen, wenn Sie ihn nicht installieren können/möchten.
Süße
Prost!
EDIT: Ich musste
Content-Type: application/json
durchContent-Type: application/x-www-form-urlencoded
ersetzen, da das Flag -d den Header jetzt auf letzteren setzt, auch wenn Sie angeben, dass Sie Json senden.cURL-Handbuch sagt:
(HTTP) Sendet die angegebenen Daten in einer POST - Anforderung auf dieselbe Weise an den HTTP-Server, wie dies ein Browser tut, wenn ein Benutzer ein HTML-Formular ausgefüllt hat und auf die Schaltfläche "Senden" klickt. Dies bewirkt, dass curl die Daten mit dem Inhaltstyp application/x-www-form-urlencoded an den Server weiterleitet. Vergleiche mit -F, --form.
Ich habe eine kleine Änderung an @pztrick über dem Skript vorgenommen. Dieses neue Skript sollte gleich funktionieren, verwendet jedoch die neuere 2.0-API:
function startbitbucket {
echo 'Username?'
read username
echo 'Password?'
read -s password # -s flag hides password text
echo 'Repo name?'
read reponame
curl -X POST -v -u $username:$password -H "Content-Type: application/json" \
https://api.bitbucket.org/2.0/repositories/$username/$reponame \
-d '{"scm": "git", "is_private": "true", "fork_policy": "no_public_forks" }'
git remote add Origin [email protected]:$username/$reponame.git
git Push -u Origin --all
git Push -u Origin --tags
}
Sie können dies in Ihrer .bashrc- oder .bash_aliases-Datei ablegen (genau wie das Originalskript).
Beachten Sie, dass dies auch als privates Repo erstellt wird. Sie können "is_private": "true" in "is_private": "false" ändern, um ein öffentliches Repo zu erstellen.
Die beste Antwort mit cURL hat für mich nicht gut funktioniert, also habe ich es in Python mit Bitbucket-API gemacht. Hier ist die Dokumentation zum Aufruf von repository.create () .
Installieren:
pip install bitbucket-api
Python:
>>> from bitbucket.bitbucket import Bitbucket
>>> bb = Bitbucket(username, password)
>>> bb.repository.create('awesome-repo', scm='git', private=True)
(True, {u'scm': ...})