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.
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
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
.
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
.
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" }'
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
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
À votre santé!
EDIT: J'ai dû remplacer
Content-Type: application/json
parContent-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.
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.
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': ...})