3

私はWindowsを使用しています.git bashプロンプト

bitbucket で git archive コマンドを使用しようとしています

エラーリモートを受け取ります:「git upload-archive:アーカイバがエラーで死亡しました」

何か案は ?

git アーカイブ --remote=ssh://git@bitbucket.org/username/reponame.git --format=tar --output="file.tar"

すべての SSH キーと公開キーなどを作成し、ssh -v hg@bitbucket.org もテストしましたが、正常に動作します

4

1 に答える 1

10

ツリーを正確に処理せずにアーカイブだけを取得することはできません-使用しているときに取得したいですか--remote

git archive --remote=ssh://git@bitbucket.org/username/reponame.git --format=tar --output="file.tar" master

ブランチの名前に言及して、うまくいくでしょう。
これは、タグの名前でも機能します。

ただし、このスレッドによると、コミットIDは機能しません

git-archive単なるコミット(またはツリー)IDではなく名前付きrefが必要な理由はありますか?

はい; 通常、gitリポジトリはクライアントが任意のsha1にアクセスすることを許可しません。代わりに、要求されたオブジェクトが参照によってアクセス可能である必要があります。

git-archiveはこれを適切に実施していませんでした。最近、名前による参照と、参照のサブツリー(たとえばHEAD:subdir/)のみを許可するように変更されました。
つまり、アドバタイズされた参照から到達可能であっても、任意のコミットまたはツリーsha1を禁止します。

IDを使用するためにgit-upload-archiveにパッチを適用するのは難しいでしょうか?
refにタグを使用することもできますが、私の場合、ほとんどすべてのコミットが無駄に見えるタグになります。

一般的なケース(誰かがツリーsha1を要求した)では、すべてのコミットのすべてのツリーをトラバースして、到達可能かどうかを確認する必要があるため、正しく実行するには少しコストがかかります。

より制限された一連のルールを実装して、「」を許可し、到達可能な<commit>:<subdir>ことを確認できる可能性があります。 これにより、任意のツリーsha1が許可されなくなりますが、一般的なユースケース(つまり、特定のリビジョンのツリー、またはサブツリーを取得したい場合)をカバーできると思います。<commit>

于 2012-08-22T12:56:13.853 に答える