Specify custom gitattributes file location for git archive

允我心安 提交于 2019-12-14 02:35:06

问题


I'd like to expose git archive, but have a way for users to ask for some files or globs to be excluded, so the resulting archive file is not very big.

Normally you'd write the file/glob list to .gitattributes and then run git archive. But this means only one person can ask for an archive per on-disk repository, since they have to write their ignore-export list to .gitattributes, then get the archive, before yielding to someone else. Also this means that whatever settings you had in there previously get clobbered.

Is there a way I could write to /tmp/attributes-1 or another similar temp file, and tell git archive to read that .gitattributes file instead of $repo/.gitattributes? Reading the doc string, it doesn't seem like it.

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

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


回答1:


Did you miss the --worktree-attributes option of git archive?

--worktree-attributes

Look for attributes in .gitattributes files in the working tree as well (see the section called “ATTRIBUTES”).

...

Note that attributes are by default taken from the .gitattributes files in the tree that is being archived. If you want to tweak the way the output is generated after the fact (e.g. you committed without adding an appropriate export-ignore in its .gitattributes), adjust the checked out .gitattributes file as necessary and use --worktree-attributes option. Alternatively you can keep necessary attributes that should apply while archiving any tree in your $GIT_DIR/info/attributes file.

So you must checkout a temporary work-tree, set the desired gitattributes there and use the --worktree-attributes option.



来源:https://stackoverflow.com/questions/42311670/specify-custom-gitattributes-file-location-for-git-archive

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!