Mercurial:推送从外部源更改的文件

Mercurial:推送从外部源更改的文件,mercurial,Mercurial,我知道这是一个复杂的场景,但这是我的情况。我们有 正在更新并发布到SharePoint的文件(*.doc)。我要用Mercurial的。我们有一个脚本,可以将这些文件导出到标记为mercurial存储库(克隆)的windows共享中,目的是自动将文件推送到中心mercurial存储库中 文件的初始导出导致这些文件被标记为未版本。简单的 hg add hg push 将文件移动到所需的中心repo。这些文件每晚自动导出(覆盖文件)到windows共享。但mercurial不承认有任何变化 h

我知道这是一个复杂的场景,但这是我的情况。我们有 正在更新并发布到SharePoint的文件(*.doc)。我要用Mercurial的。我们有一个脚本,可以将这些文件导出到标记为mercurial存储库(克隆)的windows共享中,目的是自动将文件推送到中心mercurial存储库中

文件的初始导出导致这些文件被标记为未版本。简单的

hg add 
hg push 
将文件移动到所需的中心repo。这些文件每晚自动导出(覆盖文件)到windows共享。但mercurial不承认有任何变化

hg status 
结果是空的

我的问题是,我如何才能让Mercurial认识到这些变化,从而推动它们


谢谢

我的理解是你们有两个回购协议,一个是中央回购协议的克隆。从这里开始,你必须把它们当作单独的存储库。 hg状态仅显示
工作副本
与repo中原始文件之间的差异(
.hg目录
) 对回购进行更改将显示在
hg日志中
而不是
hg状态中

这是一个正常的程序

              +------+            +------+
              |Repo A|            |Repo B|
              +------+            +------+
 New File        |                   |
 .............>  |                   |
                 | hg add            |
                 | hg commit         |
 Files in repo A |                   |
 --------------- |                   |
                 |      hg push      |
                 |------------------ |  Files in Repo B
                 |      hg pull      |
                 |                   |  hg update
                 |                   |  hg status (empty)
                 |                   |  hg log (Will show new
                                                  version )
此外,MS word文档文件将被视为二进制文件,您可能无法充分利用版本控制

很抱歉有点迂腐,但repo和工作目录之间的差异造成了足够的混乱。在repo中拉入的文件将只显示为
hg update

      +------------+                 +---------+
      |Your working|                 |Your Repo|
      |directory   |                 |.hg dir  |
      +------------+                 +---------+
            |                             |
            |        hg status            |
            |-----------------------------|
            |   shows difference between  |  hg pull <--
            |      working dir and repo   |-------------
            |                             |  <-- hg push
            |                             |     from another repo
            |                             |
            |         hg update           |  hg pull or push
            | <-------------------------- |  deals with repo
            |   This brings latest change |  and not working
            |   version from repo to      |  dir
                   working dir
+-------------++---------+
|你的工作| |你的回购|
|目录| |.hg dir|
+------------+                 +---------+
|                             |
|汞状态|
|-----------------------------|

|显示| hg pull之间的差异您确定文件不同吗?或者它们被覆盖了?如果hg status结果为空,则表示文件未更改。您的工作流程中没有任何可能导致问题的特殊内容。如果目录中的文件发生了更改,Mercurial将看到它。@krtek是的,这些文件(或其中一些)是不同的。是的,它们被覆盖。您是对的,它们是两个独立的repo,正在“导入”到本地repo的文件正在被覆盖。同样,它们是二进制的,但我们主要关心的是能够区分更改,这可以通过Turtoisehg VisualDiff和DocDiff工具实现。被覆盖的文件根本不应该经过“hg add”路径。只有新文件应该通过“hg add”。只是想知道还有什么地方可能出了问题或者有什么不同。ThanksCorrect,在初始导出到工作目录时,hg status和hg add按预期工作。在任何后续导出中(在用户做出更改并发布到SharePoint之后),Hg都无法识别被覆盖的文件是否已更改。@TDF:这就是问题所在。如果要覆盖以前添加的文件,则不需要再次添加。是,但文件的上下文已更改。我不知道该如何推动中央回购协议的改变。