gitignore基于unix文件权限

时间:2013-11-03 18:32:04

标签: git gitignore

我正在开发一个生成大量二进制文件的C项目。我尝试将源保持在源代码管理之下。但是,我希望忽略二进制文件,而不必在创建新文件时将它们添加到gitignore文件中。这是一个各种沙箱,因此我在尝试新事物时创建了许多新的二进制文件。我可以在一个目录中构建我的所有二进制文件或给它们一个后缀,但我不喜欢这些原因。由于GCC自动在它生成的二进制文件上设置可执行位,我可以使用该标志来忽略它们吗?

2 个答案:

答案 0 :(得分:5)

我建议不要这样做。如果您需要在构建过程中或在运行时使用脚本会发生什么,但由于它具有可执行位,因此会意外地进行gitignored?如果其他人在不知道giti​​gnore的情况下为您的项目做出贡献,这可能会造成混乱。你最好手动添加文件(或使用bin目录)来解决这个问题。

话虽如此,gitignore似乎不支持基于模式的文件忽略,但您可以自动执行手动添加可执行文件的过程。

如果您的.gitignore文件可以被覆盖:

运行此选项可更新被忽略的文件:find -type f -executable | sed 's#^.##' > .gitignore

如果您的.gitignore文件应保持原样:

  1. 设置新的忽略文件(您现有的.gitignore仍应有效):git config core.excludesfile .auto_gitignore
  2. 运行此选项以创建/更新您忽略的文件列表:find -type f -executable | sed 's#^.##' > .auto_gitignore
  3. 如果您想与他人分享,请提交您的.auto_gitignore,如果不愿意,请将.auto_gitignore添加到.git/info/exclude。请注意,如果您共享它,您的协作者也必须单独执行第1步。
  4. 注意:如果由于您的查找版本不支持-executable而收到错误,请将其替换为-perm /111

答案 1 :(得分:0)

不直接,但您可以使用find查找具有执行权限的程序:

find . -type f -perm +0111 -print

根据需要运行以创建新的.gitignore条目。 (请注意,这将谨慎使用;它将找到可执行的shell脚本,它们是源文件,以及可执行的二进制文件。)