Neues Repo auf Bitbucket vom Git Bash Terminal erstellen?

72

Ist es möglich, ein neues Repository in Bitbucket mithilfe der Befehlszeile Git zu erstellen? Ich habe folgendes versucht:

git clone --bare https://[email protected]/username/new_project.git

Ich bekomme diese Nachricht:

Klonen in das nackte Repository 'new_project.git' ...
fatal: https://[email protected]/username/new_project.git/info/refsnicht gefunden: Haben Sie git update-server-info auf dem Server ausgeführt?

Es wäre schön, dies zu tun, ohne zur Web-App zu gehen.

Patrick
quelle

Antworten:

91

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 zu erstellen REPO_NAME.

Weitere Informationen finden Sie unter Verwenden der Bitbucket-REST-APIs .

AKTUALISIEREN

Für Bitbucket V2 siehe POST ein neues Repo

Marek
quelle
34
Danke, einfache, einfache Lösung. Erwähnenswert oben schafft ein öffentliches Repo. Fügen Sie einfach --data is_private = 'true' für ein privates Repo hinzu
Patrick
4
Für mich habe ich das falsche Passwort eingegeben, aber Curl hat mir nicht gesagt, dass es ein 401 Unauthorized hat. Durch Hinzufügen von -v kann ich sehen, was los war.
Funroll
3
Ich musste ein Repo nicht unter meinem Konto erstellen, sondern unter einem Team, in dem ich Mitglied bin. Die API zeigt dies, aber fügen Sie --data owner = <Teamname>
Chad Gorshing
9
Aus Sicherheitsgründen würde ich jedes Mal --user login:passeinfach ändern --user loginund das Kennwort manuell eingeben, damit es nicht in Ihrem gespeichert wird .bash_history(oder wenn Sie unter OS X arbeiten, können Sie das Kennwort sicher über die Befehlszeile aus dem Schlüsselbund abrufen. Weitere Informationen finden Sie hier für Beispiel: joshtronic.com/2014/02/17/… ).
Ivanzoid
1
Der Beitrag von @Stephen unter stackoverflow.com/a/19670989/951349 ist etwas aktueller.
smileBot
12

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" }'
mcfw
quelle
3
Programmiersprache kann auch hinzugefügt werden, zB:"language": "python"
ccpizza
11

Hier ist das Skript von @ hannesr, das ein wenig optimiert wurde, 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 Ihrem .bashrcoder platzieren .bash_aliases.

pztrick
quelle
3
Ich mag die Einfachheit dieser Lösung, aber ich würde "read -s" für das Passwortfeld verwenden. Dies schaltet einfach das Echo aus, so dass das eingegebene Passwort bei der Eingabeaufforderung (oder im Scrollback-Puffer) nicht lesbar ist
eurythmia
@pztrick: Sie können kombinieren echound readin einer einzigen Zeile, zBread -p 'Username?' username
ccpizza
bitbucket-cli( sudo pip2 install bitbucket-cli) tut dies auf sicherere Weisebitbucket create --private --protocol ssh --scm git YOUR_REPO_NAME
Jonathan
2

Ich habe ein schnelles Shell-Skript erstellt, das sich darum kümmert, ein lokales Git im aktuellen Arbeitsverzeichnis zu erstellen, das "Initial Commit" durchzuführen und dann das Bitbucket-Repo (mit der Mareks-Curl-Methode) zu erstellen und schließlich alles zu tun, was erforderlich ist, um das Initial zu pushen auf bitbucket festlegen.

(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>

Der Code befindet sich auf http://bitbucket.org/hannesr/fillbucket

hannesr
quelle
2

Die Top-Antwort mit cURL funktionierte für mich nicht gut, daher habe ich sie in Python mit der Bitbucket-API erstellt . 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': ...})
gak
quelle
1

Ich habe eine geringfügige Änderung an @pztrick über dem Skript vorgenommen . Dieses neue Skript sollte genauso 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 Ihre .bashrc- oder .bash_aliases-Datei einfügen (genau wie das ursprüngliche Skript).

Beachten Sie, dass dies auch als privates Repo erstellt wird. Sie können "is_private": "true" in "is_private": "false" ändern, um es zu einem öffentlichen Repo zu machen.

user1159415
quelle
0

@hannester Ich habe dein Skript gegabelt und leicht modifiziert.

Sie hatten die falsche Remote-URL (Sie haben Ihren Benutzernamen im Skript belassen). Es wurde geändert, um Benutzername und Passwort in die Skriptdatei aufzunehmen.

Und umbenannt, mit Anweisungen zum Hinzufügen zum Pfad:

https://bitbucket.org/oscarmorrison/newgit

Oscar Morrison
quelle
3
Hallo Oscar, und willkommen bei StackOverflow. Danke für Ihren Beitrag! Ich habe jedoch einen kleinen Vorschlag; Es ist besser, das Skript in Ihre Antwort aufzunehmen (nicht nur einen Link dazu), da auf diese Weise die Antwort niemals verloren gehen kann und immer mit der Frage gepaart wird.
ljgw