gpt4 book ai didi

mercurial - 使 mercurial 子存​​储库表现得像 subversion 外部

转载 作者:行者123 更新时间:2023-12-04 14:20:37 25 4
gpt4 key购买 nike

FAQ 和 hginit.com 对帮助我从 svn 过渡到 hg 非常有用。

但是,当涉及到以 subversion 外部的方式使用 Hg 的子存储库功能时,我已经尝试了所有方法,但无法复制 svn 外部的良好行为。

这是我想要做的最简单的例子:

  • 初始化“lib”存储库
    这个存储库永远不会被用作独立的;它总是包含在 main 中
    存储库,作为子存储库。
  • 初始化一个或多个包括存储库
    为了保持示例简单,我将“初始化”一个名为“main”的存储库
  • 将“main”包括“lib”作为子存储库
  • 重要的是——这是我无法工作的地方:
    当我修改“main/lib”中的一个文件,并推送修改时,
    然后将该更改推送到“lib”存储库 - 而不是副本
    在“主要”里面。

  • 命令行胜于 Eloquent 。我在这个主题上尝试了很多变体,但这里是要点。如果有人可以在命令行中回复,我将永远感激!

    1.初始化“lib”存储库

    $ cd/home/moi/hgrepos ## 在我的主服务器上存储我的 hg 存储库

    $ hg 初始化库

    $ echo "foo"> lib/lib.txt

    $ hg 添加库

    $ hg ci -A -m "Init lib"lib

    2. 初始化“main”存储库,并包含“lib”作为子存储库

    $ cd/home/moi/hgrepos

    $ hg 初始化主

    $ echo "foo"> main/main.txt

    $ hg 添加主

    $ cd 主

    $ hg clone ../lib lib

    $ echo "lib=lib"> .hgsub

    $ hg ci -A -m "Init main"。

    这一切都很好,但是当我克隆“主”存储库并制作本地时
    修改“main/lib”中的文件,并推送它们,更改被推送到“main/lib”,
    不要“解放”。

    在命令行 ESE 中,这是问题所在:

    $/home/moi/hg-test

    $ hg 克隆 ssh://moi@www.moi.com/hgrepos/lib lib

    $ hg clone ssh://moi@www.moi.com/hgrepos/main main

    $ cd 主

    $ echo foo >> lib/lib.txt

    $ hg st

    M库.txt

    $ hg com -m "Modified lib.txt, from inside the main repos"lib.txt

    $ hg 推

    推送到 ssh://moi@www.moi.com/hgrepos/main/lib

    hg 的最后一行输出显示了问题。

    它表明我对 lib 中的文件的 COPY 进行了修改,而不是对 lib 存储库中的文件进行了修改。如果这像我希望的那样工作,那么推送将是 hgrepos/lib,而不是 hgrepos/main/lib。即,我会看到:

    $ hg 推

    推送到 ssh://moi@www.moi.com/hgrepos/lib

    如果你能回答这个问题

    命令行而不是英文,

    我将永远感激不尽!

    先感谢您!

    艾米丽在波特兰

    最佳答案

    问题出在您的 .hgsub 文件上。它指向 lib 存储库所在的位置,因此如果 lib 是 main 的兄弟,则它应该是:

    lib=../lib

    还有您的 hg add libhg add main线条没有意义。那些被添加到 main 和 lib 之外的什么仓库?您在 /home/moi/hgrepos 中运行它们.

    这是您的脚本,并进行了一些调整:
    + cd /home/ry4an/hgtest
    + hg init lib
    + echo foo
    + cd lib
    + hg commit -A -m Init lib
    adding lib.txt
    + cd /home/ry4an/hgtest
    + hg init main
    + echo foo
    + cd main
    + echo lib=../lib
    + hg clone ../lib
    destination directory: lib
    updating to branch default
    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
    + hg add .hgsub main.txt
    + hg commit -m Init main: initial file and a .hgsub
    committing subrepository lib
    + cd /home/ry4an/hgtest
    + hg clone main main-clone
    updating to branch default
    pulling subrepo lib
    requesting all changes
    adding changesets
    adding manifests
    adding file changes
    added 1 changesets with 1 changes to 1 files
    3 files updated, 0 files merged, 0 files removed, 0 files unresolved
    + cd main-clone
    + echo foo
    + hg commit -m Modified lib.txt, from inside the main repos
    committing subrepository lib
    + hg push
    pushing to /home/ry4an/hgtest/main
    pushing subrepo lib
    searching for changes
    adding changesets
    adding manifests
    adding file changes
    added 1 changesets with 1 changes to 1 files
    searching for changes
    adding changesets
    adding manifests
    adding file changes
    added 1 changesets with 1 changes to 1 files

    要通过 ssh://执行此操作,您只需进行一次更改。克隆主 repo 更改时 hg clone main main-clonehg clone ssh://host/hgtest/main main-clone -- 克隆 main 会自动克隆 lib -- 这就是 subrepo 的好处。

    这是该工作的日志:
    + cd /home/ry4an/hgtest
    + hg init lib
    + echo foo
    + cd lib
    + hg commit -A -m Init lib
    adding lib.txt
    + cd /home/ry4an/hgtest
    + hg init main
    + echo foo
    + cd main
    + echo lib=../lib
    + hg clone ../lib
    destination directory: lib
    updating to branch default
    1 files updated, 0 files merged, 0 files removed, 0 files unresolved
    + hg add .hgsub main.txt
    + hg commit -m Init main: initial file and a .hgsub
    committing subrepository lib
    + cd /home/ry4an/hgtest
    + hg clone ssh://localhost/hgtest/main main-clone
    The authenticity of host 'localhost (::1)' can't be established.
    RSA key fingerprint is 0c:58:d6:d3:d3:16:14:ee:3b:be:01:bc:c7:3c:92:0b.
    Are you sure you want to continue connecting (yes/no)? yes
    ry4an@localhost's password:
    requesting all changes
    adding changesets
    adding manifests
    adding file changes
    added 1 changesets with 3 changes to 3 files
    updating to branch default
    pulling subrepo lib
    ry4an@localhost's password:
    requesting all changes
    adding changesets
    adding manifests
    adding file changes
    added 1 changesets with 1 changes to 1 files
    3 files updated, 0 files merged, 0 files removed, 0 files unresolved
    remote: Warning: Permanently added 'localhost' (RSA) to the list of known hosts.
    + cd main-clone
    + echo foo
    + hg commit -m Modified lib.txt, from inside the main repos
    committing subrepository lib
    + hg push
    ry4an@localhost's password:
    pushing to ssh://localhost/hgtest/main
    pushing subrepo lib
    ry4an@localhost's password:
    searching for changes
    remote: adding changesets
    remote: adding manifests
    remote: adding file changes
    remote: added 1 changesets with 1 changes to 1 files
    searching for changes
    remote: adding changesets
    remote: adding manifests
    remote: adding file changes
    remote: added 1 changesets with 1 changes to 1 files

    关于mercurial - 使 mercurial 子存​​储库表现得像 subversion 外部,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2570289/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com