Regex 什么';Mercurial的用户忽略文件有什么问题?

Regex 什么';Mercurial的用户忽略文件有什么问题?,regex,mercurial,hgignore,Regex,Mercurial,Hgignore,现在我已经适应了Mercurial,这是一个小小的回顾。忘记与hg remove组合使用的文件。这太疯狂了,巴斯·阿克沃兹。一旦确定遗忘文件中的某些内容不会遗忘,则可以使用hg remove,因为在创建原始回购之前跟踪了相关项目。请注意,hg remove可以有效地清除跟踪状态,但它也可以在任何从回购中获得更改的情况下安排删除文件。但是,如果忽略,跟踪停用仍会发生,但“删除我”更改集将永远不会到达另一个回购协议,并且由于某些原因,将永远不会删除您的中IMO违反直觉的内容。这是一个非常肯定的迹象,

现在我已经适应了Mercurial,这是一个小小的回顾。忘记与
hg remove组合使用的文件
。这太疯狂了,巴斯·阿克沃兹。一旦确定遗忘文件中的某些内容不会遗忘,则可以使用
hg remove
,因为在创建原始回购之前跟踪了相关项目。请注意,
hg remove
可以有效地清除跟踪状态,但它也可以在任何从回购中获得更改的情况下安排删除文件。但是,如果忽略,跟踪停用仍会发生,但“删除我”更改集将永远不会到达另一个回购协议,并且由于某些原因,将永远不会删除您的中IMO违反直觉的内容。这是一个非常肯定的迹象,有人和我不认识的这些家伙,不愿意在DUH设计问题上妥协。重要的是要明白,你并不决定什么是重要的,Mercurial决定。当然,当你在拉合并时除外。那是完全合理的。但我离题了

“忽略文件/删除”是一个很好的组合,适用于已跟踪但非常特定的文件,您希望忘记这些文件,但如果您处理的是大量生成的文件,而这些文件是由更广泛的模式决定的,则不值得冒此风险。只需进行双重回购,然后将远程回购中的
pull-u
传输到同步回购中,然后从工作回购中提交
pull-u
并合并到回购中,其唯一目的是合并更改,并将更改传递到未完全跟踪或未跟踪文件的位置(当然,拉而不是推的行为是不同的,因为嘿,为什么要保持一致?)不会让人沮丧。相信我。你必须有两次回购才能完成的想法是有充分理由的冒犯,而我们中的许多人这么做应该表明一个严重的设计问题,但这比所有其他让你后悔寻找合理替代方案的可怕事情要痛苦得多

使用
hg-help
。这实际上是Mercurial最好的功能,而且通常比互联网(我不认为互联网在所有事情上都混淆了hg)更好,因为它能解答这个VCS中所有混淆和违反直觉的问题

/回顾

# switch to regexp syntax.
syntax: regexp


#Config Files

#.Net
^somecompany\.Net[\\/]MasterSolution[\\/]SomeSolution[\\/]SomeApp[\\/]app\.config
^somecompany\.Net[\\/]MasterSolution[\\/]SomeSolution[\\/]SomeApp_test[\\/]App\.config

#and more of the same following
在我的mercurial.ini中,位于我的用户目录的根目录下

[ui]
username = ereppen
merge = bcomp
ignore = C:\<path to user ignore file>\.hgignore-config
[ui]
username=ereppen
合并=bcomp
ignore=C:\\.hgignore配置
背景:

我在node中编写了一个自动配置实用程序。我只希望对它更改的文件的更改被忽略。我们有两个团队,但这两个团队并不在同一页面上,因此现在它需要针对用户


配置文件已就位,并由我的ini文件指向。我克隆。我运行配置实用程序并更改文件,stat显示每个文件的列表,旁边有一个M。我认为这是utf-8的事情,并显式地将文件设置为utf-16 little endian。我不认为我在使用任何现代风格的正则表达式都值得使用实际调用regEx不支持。

文件
.hgignore
对跟踪的文件无效。它的功能是阻止您看到您希望忽略的文件列为“未跟踪”。如果您看到“M”,则它们已经被添加(您在克隆中获得了它们),因此
.hgignore
不做任何操作

处理不同机器之间的配置文件的通常方式是将
app.config.sample
放入源代码控制中,在
中设置
app.config
并让人们在进行配置编辑时执行复制


或者,如果您的配置文件允许包含和覆盖,则以
include app local.config
结束它们,并覆盖
app local.config
中未添加且确实包含在
中的任何设置。hgignore

,因此无法使用本地设置来确定不需要从克隆?这是正确的。您可以将“其他所有内容”作为参数传递给
hg commit
,您可以将
--exclude thing/to/exclude
与一些命令一起使用,甚至可以创建别名(shell或mercurial),以便
hg mycommit
对这些排除项进行提交,但没有配置文件方式来说明“我对一个文件做了更改,我告诉过你这个文件很重要,但我不在乎".The
which.sample
这是你会发现的大多数项目都会做的。很酷。对于为什么Mercurial希望你添加所有这些步骤来做这样简单的事情感到困惑,但感谢你的帮助。@ErikReppen这不是我的决定,但可能是一个合理的决定。不跟踪更改可能是不明智的,
.hgignore
file是跟踪的,所以当你拉+更新时你会得到我的更改。所以如果ignore可以忽略跟踪的文件,我把
src/submodule
放在那里,你就不会在没有任何警告的情况下提交和推送子模块中的更改。添加一个文件,使其被跟踪就是说“这很重要”有些人使用“mq”来保留跟踪文件的本地覆盖,但我还是更喜欢.sample。好吧,但我应该说“除了这些都很重要。”这似乎是一件显而易见的事情。我不是一个文件一个文件地跟踪。我跟踪的是满是文件和其他目录的目录。少数是我不想跟踪的文件,但仍然有足够多的文件,这是一个PITA,可以多次单独列出每个文件。当我进行克隆时,它可以读取我的ini文件,并且可以从这里阅读我所指的忽略列表。老实说,我甚至不理解特定于用户的忽略列表的意义。