web-dev-qa-db-fra.com

Créer un nouveau dépôt sur Bitbucket à partir du terminal Git Bash?

Est-il possible de créer un nouveau référentiel dans Bitbucket en utilisant la ligne de commande Git? J'ai essayé ce qui suit:

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

Je reçois ce message:

Clonage dans le référentiel nu 'new_project.git' ...
fatal: https://[email protected]/username/new_project.git/info/refs introuvable: avez-vous exécuté git update-server-info sur le serveur?

Ce serait bien de le faire sans aller à l'application Web.

69
Patrick

Vous pouvez utiliser les API Bitbucket REST et cURL. Par exemple:

curl --user login:pass https://api.bitbucket.org/1.0/repositories/ \
--data name=REPO_NAME

pour créer un nouveau référentiel nommé REPO_NAME.

Voir Utilisez les API Bitbucket REST pour plus d'informations.

METTRE À JOUR

Pour Bitbucket V2 en particulier, voir POST un nouveau référentiel

87
Marek

Plus récemment, nous pouvons simplement utiliser bitbucket-cli .

Installez-le avec pip

pip install bitbucket-cli

Puis créez un repo en utilisant

bitbucket create --private --protocol ssh --scm git YOUR_REPO_NAME

Notez que cela crée un dépôt privé git, vous pouvez utiliser --public pour un accès public et --scm hg si vous utilisez Mercurial. L'argument de nom d'utilisateur peut être ajouté via --username YOUR_USER_NAME.

43
Stephen

Voici le script de @ hannesr modifié un peu pour accepter les entrées d'invites:

# 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
}

Vous devriez placer ceci dans votre .bashrc ou .bash_aliases.

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

J'ai créé un script Shell rapide qui prend en charge la création d'un git local dans le répertoire de travail actuel, effectue le "Commit initial", puis crée le référentiel bitbucket (à l'aide de la méthode curl de Mareks), puis finalement fait tout ce qui est nécessaire pour pousser le début commettre à bitbucket.

(notez que cela concerne uniquement les pensions privées, mais cela peut être facilement modifié comme décrit par Patrick)

Utilisez-le comme ceci:

fillbucket <user> <password> <reponame>

Le code est sur http://bitbucket.org/hannesr/fillbucket

2
hannesr

Voici le bonbon copier/coller one-liner:

# 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"

NOTE: Vous devriez mettre à jour constantes avec vos informations

De cette façon, votre mot de passe n'est pas stocké dans votre .bash_history.

Ce doit être une ligne pour tenir dans votre fichier ~/.gitconfig.

Usage

git create <repository_name>

Cela retourne soit null _ ou vos adresses de référentiel nouvellement créées.

Vous pouvez supprimer la partie jq si vous ne pouvez/ne voulez pas l’installer.

Douceur

 Success Message

À votre santé!

EDIT: J'ai dû remplacer Content-Type: application/json par Content-Type: application/x-www-form-urlencoded parce que le drapeau -d définit désormais l'en-tête sur ce dernier même si vous indiquez que vous envoyez JSON.

manuel cURL dit:

(HTTP) Envoie les données spécifiées dans une requête POST au serveur HTTP, de la même manière qu'un navigateur envoie lorsqu'un utilisateur a rempli un formulaire HTML et appuie sur le bouton d'envoi. Ainsi, curl transmettra les données au serveur à l'aide du type de contenu application/x-www-form-urlencoded. Comparez à -F, --form.

1
Lowinput

J'ai légèrement modifié le script @pztrick au-dessus du script . Ce nouveau script devrait fonctionner de la même manière, mais il utilise la nouvelle API 2.0:

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
}

Vous pouvez placer ceci dans votre fichier .bashrc ou .bash_aliases (exactement comme le script original).

Notez que cela créera également ceci en tant que dépôt privé. Vous pouvez remplacer "is_private": "true" par "is_private": "false" pour en faire un repo public.

0
user1159415

La meilleure réponse avec cURL ne fonctionnait pas bien pour moi, alors je l'ai fait en Python avec Bitbucket-API . Voici la documentation sur le repository.create () call.

Installer:

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