コマンドラインGitを使用してBitbucketに新しいリポジトリを作成することはできますか?私は次を試しました:
git clone --bare https://[email protected]/username/new_project.git
私はこのメッセージを受け取ります:
ベアリポジトリ「new_project.git」にクローンを作成しています...
致命的:https://[email protected]/username/new_project.git/info/refs
見つかりません:サーバーでgit update-server-infoを実行しましたか?
Webアプリにアクセスせずにこれを行うと便利です。
Bitbucket REST APIおよびcURLを使用できます。例:
curl --user login:pass https://api.bitbucket.org/1.0/repositories/ \
--data name=REPO_NAME
REPO_NAME
という名前の新しいリポジトリを作成します。
詳細については、 Bitbucket REST APIs を使用してください]を参照してください。
更新
特にBitbucket V2については、 POST a new repo をご覧ください。
最近では、 bitbucket-cli
のみを使用できます。
pip
を使用してインストールします
pip install bitbucket-cli
次に、を使用してレポを作成します
bitbucket create --private --protocol ssh --scm git YOUR_REPO_NAME
これによりプライベートgitリポジトリが作成されます。パブリックアクセスには--public
を使用でき、Mercurialを使用する場合は--scm hg
を使用できます。ユーザー名の引数は、--username YOUR_USER_NAME
を介して追加できます。
@ hannesrのスクリプト は、プロンプトからの入力を受け入れるために少し調整されています。
# 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
}
これを.bashrc
または.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" }'
現在の作業ディレクトリでローカルgitを作成し、「初期コミット」を実行してからBitbucketリポジトリを作成し(Mareks curlメソッドを使用)、最後に初期をプッシュするために必要なすべてを実行するクイックシェルスクリプトを作成しましたbitbucketにコミットします。
(これはプライベートリポジトリ専用ですが、Patrickの説明に従って簡単に変更できます)
次のように使用します。
fillbucket <user> <password> <reponame>
one-liner copy/paste candyは次のとおりです。
# 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:update定数情報を使用する必要があります。
この方法では、パスワードは.bash_historyに保存されません。
~/.gitconfig
ファイル内に収まるように、1行にする必要があります。
使用法
git create <repository_name>
これは、nullまたは新しく作成されたリポジトリアドレスを返します。
Jq部分をインストールできない場合、またはインストールしない場合は、jq部分を削除できます。
甘さ
乾杯!
EDIT:私は
Content-Type: application/json
をContent-Type: application/x-www-form-urlencoded
に置き換えなければなりませんでした。なぜなら、-dフラグは、たとえjsonを送信することを指定します。cURLマニュアルには次のように書かれています:
(HTTP)指定されたデータをPOSTリクエストでHTTPサーバーに送信します。ユーザーがHTMLフォームに入力して送信ボタンを押したときにブラウザーが行うのと同じ方法です。これにより、 curlがcontent-type application/x-www-form-urlencodedを使用してデータをサーバーに渡すようにします。
CURLの一番の答えは私にはうまくいきませんでしたので、Python with Bitbucket-API 。 repository.create() 呼び出しに関するドキュメントは次のとおりです。
インストール:
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': ...})
@ pztrick上記スクリプト を少し変更しました。この新しいスクリプトは同じように機能しますが、新しい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
}
これを.bashrcまたは.bash_aliasesファイルに配置できます(元のスクリプトと同様)。
これはプライベートリポジトリとしても作成されることに注意してください。 "is_private": "true"を "is_private": "false"に変更して、パブリックリポジトリにすることができます。