2016-05-30 21 views
2

私は比較的新しい--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' 

答えて

1

私だけのBitbucketのサポートは、あなたと一緒に確認することができますのBitbucketサーバ

にプッシュしています:

  • gitホスティングサーバーの正確なgitバージョン
  • その機能が明示的に無効化されている場合(git config receive.advertiseatomic 0

ほとんどのgitクライアントがgit 2.4以上のレベルでない可能性がありますので、私はそれがまだアクティブ化されていないと思われます。that I mentioned in February 2015

+0

私はそれがBitBucketクラウドサーバーにプッシュされているわけではありません。私が管理者であるBitBucketを実行しているプラ​​イベートサーバーにプッシュされています。私は2.8.1を使用するようにサーバーを更新し、 'receive.advertiseatomic'のためにリモートリポジトリには何も設定されていません。私はそれがHTTPプロトコルを超えているという事実と関係があるのか​​どうか疑問に思っています。この場合、Webアプリケーションは--atomicオプションを受け入れていないかもしれません。また、クライアントが失敗しないことを織り交ぜており、リモコンが原子を処理できないことを教えてくれます。 –

+0

@ JosephK.Straussこれはhttpで動作するはずです。明示的な 'git config receive.advertiseatomic 1'で試してみましたか(デフォルトであるはずですが)。再現可能なケースがありますか? – VonC

関連する問題