2017-02-18 90 views
1

我想公開git archive,但有一種方法可以讓用戶請求排除某些文件或globs,所以生成的存檔文件不是很大。爲git存檔指定自定義gitattributes文件位置

通常情況下,您會將文件/ glob列表寫入.gitattributes,然後運行git archive。但是這意味着只有一個人可以要求每個磁盤存儲庫存檔,因爲他們必須將他們的忽略導出列表寫入.gitattributes,然後獲得存檔,然後屈服於其他人。這也意味着無論你在那裏有什麼設置都會被破壞。

有沒有辦法可以寫入/ tmp/attributes-1或其他類似的臨時文件,並告訴git archive讀取.gitattributes文件而不是$repo/.gitattributes?閱讀文檔字符串,它看起來不像它。

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

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

回答

1

你錯過的git archive--worktree-attributes選項?

--worktree-attributes

查找在工作樹 以及在.gitattributes文件屬性(見「屬性」一節)。

...

注意屬性默認情況下,從樹的.gitattributes 文件被存檔服用。 如果你想調整的事實後產生的輸出 方式(例如,你不承諾增加 在其.gitattributes適當export-ignore),根據需要調整 簽出.gitattributes文件,並使用 --worktree-attributes選項。或者,您可以在保存 $GIT_DIR/info/attributes文件中的任何樹時保留必要的屬性。

因此,您必須簽出一個臨時工作樹,在那裏設置所需的gitattributes並使用--worktree-attributes選項。

+0

檢出臨時工作樹還會修改存儲庫的權利?所以我一次只能執行一個以上的操作。 –

+0

這就是如何在不修改存儲庫的情況下籤出臨時工作樹:'tmpdir =「$(mktemp -d)」; mkdir「$ tmpdir」/ worktree; cd「$ tmpdir」/ worktree; GIT_INDEX_FILE =「$ tmpdir」/ index git --git-dir =/path/to/repo/.git checkout HEAD。' – Leon

+0

@KevinBurke我發佈了一個單獨的問題和答案:http://stackoverflow.com/questions/ 42322079 /如何對安全結帳-A-臨時工作,樹從-A-混帳資料庫 – Leon