it-swarm.com.de

Neues Repo auf Bitbucket vom Git Bash-Terminal erstellen?

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

69
Patrick

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

87
Marek

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.

43
Stephen

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.

11
pztrick

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" }'
8
mcfw

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

2
hannesr

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

 Success Message

Prost!

EDIT: Ich musste Content-Type: application/json durch Content-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.

1
Lowinput

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.

0
user1159415

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': ...})
0
Gerald Kaszuba