是否有可能从另一台机器“拉”未提交的更改?

时间:2015-12-14 09:40:14

标签: version-control mercurial

假设我有两台具有Mercurial存储库的计算机,其中包含某些修订版的本地副本,并且没有对该本地副本进行未提交的更改。现在我在一台机器上进行一些本地更改而不提交。

是否有可能在第二台机器上拉/复制这些未提交的更改?即使第二台机器在不提交的情况下对其本地副本应用相同的更改?

注意:我对单个命令或单行程感兴趣,只能在第二台机器上执行。

3 个答案:

答案 0 :(得分:3)

您可以ALTER TABLE tablename ALTER COLUMN colname TYPE bytea USING colname::bytea ; 将所有更改导出到第一台计算机上的文件中,然后hg diff --git > changes.patch将这些更改导出到第二台计算机上。

答案 1 :(得分:2)

Mercurial不会为你做这件事;你只能推送和拉出存储库中的内容。但是,如果您通过不受限制的ssh访问上游计算机,则可以使用它来运行远程hg diff并将结果应用为补丁。例如(在“第二台机器上”):

% hg paths
default = ssh://example.com/path/to/repo
% ssh example.com hg -R path/to/repo diff > uncommitted.patch
% hg import --no-commit uncommitted.patch

详细说明:如果您需要能够查看未提交的文件,您可以在远程计算机上安排ssh shell访问,并按上述方式进行操作。如果远程机器的所有者不希望你这样做,那么,mercurial不会帮助你四处寻找。

答案 2 :(得分:1)

单行版@Alexis' answer

ssh example.com hg -R path/to/repo diff | hg import --no-commit -

感谢@ReimerBehrends建议-而不是/proc/self/fd/0