在分支中获取给定目录的所有更改的文件

| 我们的项目最近从SVN切换到了Mercurial。在SVN中,要对css / js文件进行版本控制,我们将从它们所在的目录中获得最新的修订版本,并将其用作打包文件名的前缀。 我们想在Mercurial中使用相同的方法。不幸的是,尽管这可能是由我们的分支方法引起的,但说起来容易做起来难。 简而言之,我们有一个主分支(主干)。每隔两周,我们就会从主干分支创建一个生产测试版,最终将其合并到我们的实时分支中。 现在,我们基本上是在使用
hg log -b live some_folder/js
hg log -b live some_folder/css
获取这些目录中最近更改过的文件的变更集。 我们遇到的问题是,使用此方法无法检测到我们的合并变更集。因此,如果我们合并一个在some_folder / css中修改文件的变更集,则hg不会将其视为已更改,因为该文件实际上并未在合并变更集中进行修改,而是在正在修改的变更集中之一合并。 我们还尝试了revsets来尝试解析日志,但是似乎有相同的问题。使hg日志列出更改后的文件的唯一方法似乎是使用--stat选项,但是
hg log -b live --stat some_folder/css
也不显示变更集。 我正考虑只使用
hg log -b live --stat
获取整个分支的日志,然后对其进行解析以查找最近修改目录的更改集,但我不希望这样做,因为随着分支的增大,它看起来会越来越慢。 有什么更好的方法来解决我的问题吗?     
已邀请:
我将通过声明我当前在此PC上未安装Mercurial来验证该命令,因此无法验证命令,但这至少可以为您指明有用的(?)方向。 您可以使用
hg status
指定
--rev
选项来获取两个修订之间的更改列表,因此使用修订符号可以执行以下操作:
hg status -b live --rev -2:-1 some_folder/css
从理论上讲(这是我弄错了的地方:)),这些选项表示:
--rev -2:-1
选择工作目录的父目录(假设合并后您仍在该目录中),并将其与自己的父目录进行比较(
-2
)。指定“ 8”将有望在该分支中选择父级,但是正如我已经指出的那样,我现在无法对此进行测试。     
最后,没有一个简单的方法可以做到这一点,所以我诉诸以下方法: 在过去的x天中获取分支的所有日志。使用stat命令遍历所有这些日志,并在影响给定分支的第一个修订版本上停止。如果该日期范围内没有任何记录影响给定路径,请获取接下来x天的日志记录。所以:
hg log -b live -r \"reverse(date(\'2011-05-12 to 2011-05-26\'))\" --template \"{node} \"
然后对于每个变更集
hg st --change <the_changeset> -I \"some_folder/css\"
当它返回任何不为空的值时,我停止循环并返回变更集ID。希望在某些时候,修订集将支持通过合并更改进行迭代。     

要回复问题请先登录注册