我有一个包含Maven项目的目录.它看起来像这样:
.hg
.idea
parentProject
project1
.idea
docs
src
target
pom.xml
project2
.idea
docs
src
target
pom.xml
target
pom.xml
.hgignore
Run Code Online (Sandbox Code Playgroud)
我想忽略我所有项目中的.idea和target目录.我已经包含了.idea和target目录,.hgignore但它只忽略了哪个目录中的目录.hgignore.这意味着,只有在根目录.idea和target被忽略.
如果我.hgignore在所有子项目中添加文件,则不会更改任何文件仍然不会被忽略.
我的忽略列表如下所示:
build
dist
target
faces-config.NavData
.idea
.iml
Run Code Online (Sandbox Code Playgroud)
我应该如何指定从各地.hgignore获取.idea和target忽略?
我有这些proj/.hgignore:
syntax: glob
log/*
*~
*.orig
dump/*
*.hgignore
.hgignore
tmp/*
Run Code Online (Sandbox Code Playgroud)
但出于某种原因,当我做一个hg st或者hg com,文件.hgignore仍然显示出要修改或提交.那么.hgignore不容忽视?在我的文件夹中可能有我的团队不想忽视的细节,但我确实如此.所以我不想提交这个文件.
在一个巨大的源代码树中,我希望Mercurial只跟踪一个子文件夹.
specific/component/subfolder
Run Code Online (Sandbox Code Playgroud)
在任何体面的正则表达式工具(Regex Coach,regexpal.com)中,以下内容绝对足够(并且可以理解)
^(?!specific/component/subfolder).+
Run Code Online (Sandbox Code Playgroud)
同时.hgignore坚持要
^(?!extras).+
^extras/(?!extensions).+
^extras/extensions/(?!sharing).+
Run Code Online (Sandbox Code Playgroud)
一旦我把斜线放在前瞻组中,没有任何东西可以通过.
在调用这个bug之前(也许是另一个本土的正则表达式解析器?)我问集体智慧:-)
关于hgignore想要去的东西的间接线索的信用
我的.hgignore文件看起来像这样:
syntax: glob
# mercurial files
*.orig
*.rej
# build target and dependency directories
*/target/**
*/target-eclipse/**
.gradle/**
.gradle
*.war
*/wrapper/**
!gradle/wrapper/gradle-wrapper.jar
!gradle/wrapper/gradle-wrapper.properties
*/out/**
*/build/**
# IDE files
.idea/**
.settings/**
*.iml
*.ipr
*.iws
*.classpath
*.project
# LazyBones
.lazybones/**
# DropWizard
config.yml
config.json
# JMeter Results
*/jmeter/results/*
Run Code Online (Sandbox Code Playgroud)
请注意我尝试gradle/wrapper/*从此忽略文件中排除:
!gradle/wrapper/gradle-wrapper.jar
!gradle/wrapper/gradle-wrapper.properties
Run Code Online (Sandbox Code Playgroud)
当我运行gradle wrapper我的项目时,它会生成典型的Gradle包装器文件.但是,当我hg add没有看到这些文件(gradle-wrapper.jar和gradle-wrapper.properties)添加到hg跟踪,当我推动我的项目(hg push)时,我看不到它们出现在远程仓库上.
我.hgignore以某种方式错误配置了吗?是hg实际上仍然无视我的摇篮包装文物?
我有一个.hgignore文件,非常适合隐藏编译我的C#项目时创建的所有文件和目录.
现在当做"恢复"到以前的修订时,我还想清理我的工作目录,即删除我之前编译的所有exes和dll(因为我可能最终使用错误版本的exe或dll没有意识到它).
有没有办法做到这一点(某种方式忽略.hgignore)?现在我只是删除所有bin和obj目录,但也许Hg也可以这样做...
之前已经问过同样的问题,但解决方案对我不起作用.
我想通过将其添加到.hgignore文件来指示Mercurial忽略名为.metadata的文件夹.这是我的.hgignore文件:
glob:.hgignore
glob:.hgignore~
glob:.metadata/*
Run Code Online (Sandbox Code Playgroud)
我已成功测试了忽略.hgignore和.hgignore~的工作原理.如果我删除前两行并运行hg状态,它们会显示出来.如果我包含前两行并运行hg状态,它们就会消失.但它不适用于.metadata文件夹.上面的语法是下面引用的解决方案中报告的语法.它对我不起作用.我也尝试过glob:.metadata /.
临时解决方法是不在.metadata文件所在的工作空间上使用Mercurial.;-)
欢迎任何建议,谢谢!
编辑:解决方案所以看起来这是有效的:
glob:.metadata
Run Code Online (Sandbox Code Playgroud)
它也更简单,因此更漂亮.感谢greut指出它.