我试图拉一些文件和目录,我有以下消息:
当我查看我的存储库时,我可以看到文件已经下载但所有包含_
为前缀,甚至包含文件和文件夹的名称_
requesting all changes
adding changesets
adding manifests
adding file changes
added 1094 changesets with 4304 changes to 1071 files abort:
untracked file in working directory differs from file in requested revision: '.hgignore' [command interrupted]
Run Code Online (Sandbox Code Playgroud)
怎么了?
使用Mercurial,我需要忽略所有文件,除了名为"keepers"的某个目录中的文件.
从表面上看,使用Regex和Negative Lookahead似乎很容易; 但是,虽然我能够在Regex Buddy和其他工具中验证我的正则表达式,但在TortoiseHg中,它并没有按预期工作.
文件:
只有守护者下的两个文件不应该被忽略.
这是我希望的正则表达式:
^(?!keepers/).+$
Run Code Online (Sandbox Code Playgroud)
遗憾的是,这会导致忽略所有文件.如果我将其更改为:
^(?!keepers).+$
Run Code Online (Sandbox Code Playgroud)
它可以像你期望的那样工作.也就是说,它会忽略任何不以keepers开头的文件/文件夹.但我确实想忽略以keepers开头的文件.
奇怪的是,如果我改成它:
^(?!keepers/).+\..+$
Run Code Online (Sandbox Code Playgroud)
它将正确匹配文件夹,但如果没有扩展名,则不会忽略不在keepers文件夹中的文件.
任何意见,将不胜感激.
删除死的ImageShack链接
我的.hgignore
文件中有以下内容:
syntax: glob
obj/*
bin/*
*.suo
*.user
*.ncb
Run Code Online (Sandbox Code Playgroud)
如果我注释掉*.
过滤器,过滤可以很好地过滤掉bin
和obj
文件夹中的文件,但是,如果我保留这些过滤器,我会收到以下错误:
abort: c:\temp\.hgignore: invalid pattern (relre): *.suo
Run Code Online (Sandbox Code Playgroud)
注意:该文件以UTF-8编码
我有一个受版本控制的项目,例如,位于/project
,.hgignore
位于/project/.hgignore
.它的语法似乎是正确的,但问题是某些用户完全忽略了这个文件,同时仍然为其他用户解析.
说,跑步
su -l dipsy -c 'cd /project; hg status'
Run Code Online (Sandbox Code Playgroud)
显示正确的结果,忽略适当的文件,而
su -l laalaa -c 'cd /project; hg status'
Run Code Online (Sandbox Code Playgroud)
还输出列出的文件/project/.hgignore
.
我已经检查了什么:
~/.hgrc
两个用户的文件都是相同的,输出也是如此hg showconfig
./project/.hgignore
和写入.我错过了什么?
(以防万一:Debian Lenny,Mercurial 1.6.3)
//很抱歉,如果用户名看起来很愚蠢,那么它们就不是真的(:
- 添加2010-11-26 -
PS.有没有办法在处理.hgignore
-s 上启动hg并获得调试输出?hg --debug status
并且hg status --debug
不打印任何合理的东西.
- 增加2010-11026 -
调试hg status
(结果各不相同):
# su -l dipsy -c 'cd /project; strace hg status 2>&1 >/dev/null | grep hgignore'
open("/project/.hgignore", …
Run Code Online (Sandbox Code Playgroud) Mercurial目前忽略了一个我认为不应该被忽视的文件.该.hgignore
文件非常大,经过粗略的阅读后,不清楚哪个规则是罪魁祸首.
有没有办法让Mercurial告诉我.hgignore中的哪些规则(如果有的话)匹配文件?
我开始了一个项目并将其添加到Mercurial.但我只想*.cs
在版本控制下获取文件.所以我要补充bin
,obj
,sln
,suo
,_resharper
文件夹等,以忽略模式.
如何让Hg只监视某些类型的文件,如白名单?如何在Subversion中做到这一点?
如果是这样,为什么?使用git,这些只在解决冲突后才出现在我身上.但是对于hg和sourcetree,丢弃更改会创建.orig文件.我知道有一个命令要丢弃而不保存.orig文件,但是代替那个命令开关,将*.orig添加到hgignore有什么危险吗?
我一直在谷歌和SO寻找一个问过这个问题的人,但我现在完全是空的.我会提前为这个冗长的回答方式道歉.(如果我能够弄清楚如何封装问题,也许我会成功找到答案.)
如果构建/编译行为生成数百个临时文件以创建最终结果,那么Mercurial中如何管理大型项目? 是.hgignore
的唯一答案吗?
示例场景:
您有一个项目想要使用某些开源包来实现某些功能,并且需要从源代码编译.所以你去拿包裹.un-.tgz然后将其打入自己的Mercurial存储库,以便您可以开始跟踪更改.然后,您进行所有更改,然后运行构建.
您测试最终结果,对结果感到满意并准备好提交回存储库的本地克隆.因此,您hg status
在提交前检查您的更改hg status
结果会导致您立即开始使用会让您的母亲感到羞耻的所有单词 - 因为您现在拥有"build cruft"的屏幕和屏幕.
为了争论,说这个包是MySQL或Apache:就是这样
哇什么?引起这种焦虑的特定项目将由多个物理位置的多个开发人员处理,因此需要尽可能简单.如果涉及太多,他们就不会这样做,我们手上会有更大的问题.(可悲的是,一些老狗并不热衷于学习新的技巧......)
一个建议的解决方案是他们只需要在做一个make之前在本地提交所有内容,所以他们有一个"干净的平板",然后他们必须克隆到实际进行内置.这被击落为(a)太多步骤,以及(b)不想用一堆"现在建立的时间"改变集来摧毁历史.
其他人已经提出将所有这些内容都提交到Mercurial存储库中.我强烈反对,因为那时下一次这些文件将变为"已修改",因此被包含在变更集的文件列表中.
我们不可能成为遇到这个问题的唯一人.那么"正确"的解决方案是什么?我们唯一的尝试是尝试创建一个大规模智能.hginore
文件?这让我感到不安,因为如果我告诉Mercurial"忽略这个目录中的所有内容我还没有告诉你",那么如果下一个应用的补丁将文件添加到该被忽略的目录中会发生什么?(Mercurial永远不会看到那个新文件,对吧?)
希望这不是一个明显答案的完全愚蠢的问题.我以前曾多次从源代码编译过东西,但从来没有需要在其上应用版本控制.另外,我们是Mercurial的新手.
谁能告诉我为什么mercurial显示'hg status'命令的被忽略文件?
这是mercurial确实忽略文件的确认:
$ hg addremove
$ hg commit
nothing changed
Run Code Online (Sandbox Code Playgroud)
现在,看一下状态输出.我在上面的行之后立即运行了这个.(打印输出是部分的,删除了可识别的文本)
$ hg status
? Core/target/Core-0.0.1-SNAPSHOT-tests.jar
? Core/target/Core-0.0.1-SNAPSHOT.jar
? Core/target/classes/META-INF/MANIFEST.MF
? Core/target/classes/xxx/yyy/zzz/X.class
? Core/target/classes/xxx/yyy/zzz/XBackup.class
? Core/target/classes/xxx/yyy/zzz/XBackupInput.class
? Core/target/classes/xxx/yyy/zzz/XBackupOutput.class
? Core/target/classes/xxx/yyy/zzz/XImpl$GetResultsAndStatistics.class
? Core/target/classes/xxx/yyy/zzz/XImpl$MonitoringMode.class
? Core/target/classes/xxx/yyy/zzz/XImpl$UpdateMode.class
? Core/target/classes/xxx/yyy/zzz/XImpl.class
? Core/target/classes/xxx/yyy/zzz/XIsFullException.class
? Core/target/classes/xxx/yyy/zzz/XSource.class
? Core/target/classes/xxx/yyy/zzz/XUsageException.class
? Core/target/classes/xxx/yyy/zzz/CheckResults.class
? Core/target/classes/xxx/yyy/zzz/Noise.class
? Core/target/classes/xxx/yyy/zzz/core/DateTimeGenerator$TemporalMeasure.class
? Core/target/classes/xxx/yyy/zzz/core/DateTimeGenerator.class
? Core/target/classes/xxx/yyy/zzz/core/LoggingConfigurator.class
? Core/target/classes/xxx/yyy/zzz/core/ManagedIterator.class
? Core/target/classes/xxx/yyy/zzz/core/NetworkUtils.class
? Core/target/classes/xxx/yyy/zzz/core/StackTraceUtils.class
? Core/target/classes/xxx/yyy/zzz/core/Summarisable.class
? Core/target/classes/xxx/yyy/zzz/core/TimingUtils.class
? Core/target/classes/xxx/yyy/zzz/core/XMLStaticStringUtils.class
? Core/target/classes/xxx/yyy/zzz/core/Zipper.class
...
Run Code Online (Sandbox Code Playgroud)
在状态打印输出中显示了一千行这些被忽略的文件; 这是一个严重的guff.
我怎么能摆脱这个?
谢谢
更新:
这是我的.hgignore文件.
syntax:glob
.metadata*
syntax:regexp
^target.*$
^[^/]*/target.*$
^[^/]*/[^/]*/target.*$ …
Run Code Online (Sandbox Code Playgroud) 您的源代码管理中的典型条目忽略了GWT应用程序(在eclipse中开发)的文件?