私は比較的新しい--atomic
オプションをgit push
に使用しようとしていますが、それは私にとってはうまくいかない、つまり他の人が失敗してもいくつかのrefを変更できるようにしています。git push --atomic - 失敗しない
diffフラグhereからは、アトミックフラグも受け入れるリモートサーバー上に何かが必要なようです。これは理にかなっていますが、デフォルトで使用しているようです。
私は、httpプロトコルを使用してBitBucketサーバーインスタンスにプッシュしています。サーバー上のGitの現在のバージョンは "git version 2.8.1"です。
これを有効にするにはサーバーで設定する必要がありますか?
編集:以下
を再現することができます例です。サーバー上の
構成:クライアントで
$ git --version
git version 2.8.1
$ git config --get-all --show-origin receive.advertiseatomic
file:/home/bitbucket/.gitconfig 1
:
$ git --version
git version 2.8.2.windows.1
$ git push <local-path>/.git HEAD:refs/heads/wwww HEAD:refs/heads/zzz --force-with-lease=zzz --atomic
error: atomic push failed for ref refs/heads/zzz. status: 7
fatal: The remote end hung up unexpectedly
To <local-path>/.git
! [rejected] HEAD -> wwww (atomic push failed)
! [rejected] HEAD -> zzz (stale info)
error: failed to push some refs to '<local-path>/.git'
$ git push origin HEAD:refs/heads/wwww HEAD:refs/heads/zzz --force-with-lease=zzz --atomic
Total 0 (delta 0), reused 0 (delta 0)
remote:
remote:
To http://[email protected]/scm/proj/repo.git
* [new branch] HEAD -> wwww
! [rejected] HEAD -> zzz (stale info)
error: failed to push some refs to 'http://[email protected]/scm/proj/repo.git'
私はそれがBitBucketクラウドサーバーにプッシュされているわけではありません。私が管理者であるBitBucketを実行しているプライベートサーバーにプッシュされています。私は2.8.1を使用するようにサーバーを更新し、 'receive.advertiseatomic'のためにリモートリポジトリには何も設定されていません。私はそれがHTTPプロトコルを超えているという事実と関係があるのかどうか疑問に思っています。この場合、Webアプリケーションは--atomicオプションを受け入れていないかもしれません。また、クライアントが失敗しないことを織り交ぜており、リモコンが原子を処理できないことを教えてくれます。 –
@ JosephK.Straussこれはhttpで動作するはずです。明示的な 'git config receive.advertiseatomic 1'で試してみましたか(デフォルトであるはずですが)。再現可能なケースがありますか? – VonC