2017-02-18 11 views
1

git archiveを公開したいと思いますが、ユーザーがいくつかのファイルやグロブを除外するように要求する方法がありますので、アーカイブファイルはあまり大きくありません。gitアーカイブのカスタムgitattributesファイルの場所を指定してください

通常、ファイル/グロブリストを.gitattributesに書き込み、次にgit archiveを実行します。しかし、これは、ディスク上のリポジトリごとにアーカイブを要求できるのは、無視するエクスポートリストを.gitattributesに書き込んでから、アーカイブを取得してから他の誰かに返す必要があるということだけです。また、これは、あなたが以前にそこにあった設定がどんなものであっても、それが騒がしくなることを意味します。

/tmp/attributes-1などの一時ファイルに書き込む方法はありますか?git archive$repo/.gitattributesの代わりに.gitattributesファイルを読み込むように指示しますか?ドキュメント文字列を読んで、それはそれのように見えません。

https://git-scm.com/docs/git-archive

https://git-scm.com/docs/gitattributes

答えて

1

あなたはgit archive--worktree-attributesオプションを逃しましたか?

--worktree-attributes

作業ツリーで.gitattributesファイル内の属性を探し だけでなく(「属性」と呼ばれるセクションを参照してください)。

...

属性は、デフォルトでは、アーカイブされているツリーで.gitattributes ファイルから取られていることを注意してください。あなたは出力が事実の後に生成される 方法を微調整したい場合は、 チェックアウト.gitattributesファイルとして必要に応じて調整し、 --worktree-attributesオプションを使用する(例えば、あなたはその.gitattributesに適切なexport-ignoreを追加する ずにコミットし)。あるいは、 属性を必要に応じて、 $GIT_DIR/info/attributesファイルのツリーをアーカイブする際に適用する必要があります。

したがって、一時的な作業ツリーをチェックアウトし、そこに希望のギタリストを設定し、--worktree-attributesオプションを使用する必要があります。

+0

一時的な作業ツリーをチェックアウトすると、リポジトリの権利も変更されますか?だから、一度に複数の操作を実行することはできません。 –

+0

これはリポジトリを変更せずに一時的な作業ツリーをチェックアウトする方法です: 'tmpdir =" $(mktemp -d) "; mkdir "$ tmpdir"/worktree; cd "$ tmpdir"/worktree; GET_INDEX_FILE = "$ tmpdir"/index git --git-dir =/path/to/repo/.git checkout HEAD。 – Leon

+0

@KevinBurke私は答えで別の質問を投稿しました:http://stackoverflow.com/questions/ 42322079/safe-checkout-a-temporary-working-tree-from-a-git-repository – Leon

関連する問題