2017-02-18 93 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