将.gitignore转换为rsync合并过滤器包含文件? (用sed或awk)

时间:2013-05-27 01:32:44

标签: git sed awk rsync

我尝试使用rsync --filter=':+ .gitignore'-/exclude works but not include)无济于事。

基本上我只想在脚本中包含.ignore文件,并使用rsync将其中的所有内容上传到遥控器。

如果有人将sed或awk .gitignore的技能发送到适合包含--filter='merge file'等的文件中,我将非常感激!

或者另外一种方法是让rsync理解.gitignore是否包含在内。

https://www.kernel.org/pub/software/scm/git/docs/gitignore.html'模式格式'

http://linux.die.net/man/3/fnmatch

https://git.samba.org/?p=rsync.git;a=blob_plain;f=wildtest.txt;hb=HEAD

https://git.samba.org/?p=rsync.git;a=blob_plain;f=wildtest.c;hb=HEAD

rsync bla/中的一些问题仅表示dir,bla/*仅表示该目录中的文件,bla/**表示该目录下的所有内容(包括子目录)和{{1}终于意味着bla及其所有内容,但所有git可能都是bla/***

exclude rules似乎兼容。

3 个答案:

答案 0 :(得分:2)

也许是这样的:(再次,未经测试)

git ls-files -oz | rsync --include-from=- --from0

答案 1 :(得分:1)

我建议使用gsync而不是rsync。我写的是因为:

我有一个具有以下特征的项目:

  • 根目录中的.gitignore长度超过60行
  • 有4个子目录具有自己的.gitignore
  • 某些.gitignore个文件包含!行样式

我在其他答案中尝试了这些方法。有些人很有希望,但最终我遇到了discarding over-long filter错误。所以我写了gsync作为rsync的包装脚本来正确处理.gitignore文件(在子目录中,支持! - 样式异常。我想你会发现它有帮助的。

答案 2 :(得分:-1)

考虑一下:(未经测试)

rsync --include=.gitignore

这就是手册页所说的,虽然git的忽略文件有点高级,你可以选择注释行和“未忽略忽略的文件”,上面的命令不尊重这些文件。

你的.gitignore文件有多复杂,而且至关重要......是否忽略了.gitignore文件?