相关疑难解决方法(0)

rsync排除根据.gitignore&.hgignore&svn:ignore like --filter =:C

Rsync包含一个漂亮的选项--cvs-exclude"以与CVS相同的方式忽略文件",但CVS已经过时多年.有没有办法让它也排除现代版本控制系统(Git,Mercurial,Subversion)会忽略的文件?

例如,我从GitHub检出了很多Maven项目.通常它们.gitignore至少包括一个列表target,默认的Maven构建目录(可能存在于顶层或子模块中).由于这些目录的内容完全是一次性的,并且它们可能远远大于源代码,因此我想在使用rsync进行备份时将它们排除在外.

当然我可以明确地--exclude=target/但是会意外地抑制恰好被命名target并且不应该被忽略的不相关目录.

我可以为我的磁盘上的任何.gitignore,.hgignoresvn:ignore属性中提到的所有文件名和模式提供完整的绝对路径列表,但这将是一个巨大的列表,必须由某种脚本生成.

由于rsync没有内置支持除CVS之外的VCS检出,是否有任何好的技巧可以为它们提供忽略模式?或者某种回调系统,可以询问用户脚本是否应该包含给定的文件/目录?

更新:--filter=':- .gitignore'正如LordJavac所建议的那样,Git和--filter=:CCVS 一样好,至少在我发现的例子中,尽管不清楚语法是否完全匹配.--filter=':- .hgignore'对Mercurial不起作用; 例如,rsync不能将.hgignore包含类似^target$(Git的Mercurial等价物/target/)的行视为正则表达式.对于Subversion来说似乎没什么用,因为你需要.svn/dir-prop-base为1.6或更早的工作副本解析,并且为1.7或更高版本的工作副本沮丧地举手.

svn git mercurial rsync

100
推荐指数
6
解决办法
2万
查看次数

PHP根据.gitignore过滤文件和路径

我想使用PHP来读取.gitignore配置忽略的所有文件和路径.就像git一样.

可以重复读取目录并使用正则表达式对每个文件进行过滤.但如果路径文件太多,它就无效了.

读取.gitignore忽略的目标文件和路径的任何好的和最有效的方法?

php git path gitignore

4
推荐指数
1
解决办法
1824
查看次数

标签 统计

git ×2

gitignore ×1

mercurial ×1

path ×1

php ×1

rsync ×1

svn ×1