当前位置:  开发笔记 > 开发工具 > 正文

我可以使用SVN或Mercurial仅提交部分代码吗?

如何解决《我可以使用SVN或Mercurial仅提交部分代码吗?》经验,为你挑选了4个好方法。

我通常使用Tortoise SVN,但我一直在研究Mercurial,因为它是一个分布式版本控制系统.

我在两个系统中寻找的是一个工具,让我只选择一部分文件并提交它们.如果我现在想要这样做,我必须复制到文件的临时版本并仅保留我想要在当前版本中提交的更改,然后在提交后再次将临时版本复制到当前版本.这只是一个麻烦,程序应该能够为我做这件事.

我听说Git支持这个,如果这是正确的,请告诉我.



1> Nicholas Ril..:

Mercurial可以使用记录扩展来完成此操作.

它会提示你每个文件和每个差异.例如:

% hg record
diff --git a/prelim.tex b/prelim.tex
2 hunks, 4 lines changed
examine changes to 'prelim.tex'? [Ynsfdaq?]  
@@ -12,7 +12,7 @@
 \setmonofont[Scale=0.88]{Consolas}
 % missing from xunicode.sty
 \DeclareUTFcomposite[\UTFencname]{x00ED}{\'}{\i}
-\else
+\else foo
 \usepackage[pdftex]{graphicx}
 \fi

record this change to 'prelim.tex'? [Ynsfdaq?]  
@@ -1281,3 +1281,5 @@
 %% Local variables:
 %% mode: latex
 %% End:
+
+foo
\ No newline at end of file
record this change to 'prelim.tex'? [Ynsfdaq?]  n
Waiting for Emacs...

提交后,剩下的差异将留下:

% hg di
diff --git a/prelim.tex b/prelim.tex
--- a/prelim.tex
+++ b/prelim.tex
@@ -1281,3 +1281,5 @@
 %% Local variables:
 %% mode: latex
 %% End:
+
+foo
\ No newline at end of file

或者,您可能会发现使用MQ(Mercurial Queues)将存储库中的各个更改分离为修补程序更容易.还有一个MQ变体记录(qrecord).

更新:还可以尝试使用crecord扩展,它为hunk/line选择提供了curses接口.

crecord截图


无法编辑大块头是一件好事.我不喜欢让我的开发人员提交他们实际上没有构建或测试过的代码的"功能".当他们运行`hg record`时,个别帅哥_应该被视为不可改变的; 如果他们需要进一步编辑,那么是时候中止提交了.
有一个GUI工具:Tortoisehg支持大块选择.

2> Pat Notz..:

是的,git允许你这样做.该git add命令有一个-p(或--patch)选项,允许您逐个查看您的更改,选择要进行的更改(您还可以优化黑客或在适当的位置编辑补丁).您还可以使用交互模式git-add(git add -i)并使用"p"选项.

这是一个关于交互式添加的截屏视频,它还演示了补丁功能git add.



3> Hauge..:

查看TortoiseHG,它将进行大块选择,并允许您对不同的提交对一个文件进行不同的更改.

它甚至允许您对一些文件提交所有更改,并在一次提交中对其他文件进行部分更改.

http://tortoisehg.bitbucket.io/



4> Ted Naleid..:

我刚才问了一个类似的问题,得到的使用hgshelve扩展的答案就是我正在寻找的.

在进行提交之前,您可以将来自不同文件(或文件中的更改)的更改放在"架子"上,然后提交您想要的内容.然后,您可以取消搁置您未提交的更改并继续工作.

过去几天我一直在使用它并喜欢它.非常容易可视化和使用.

推荐阅读
放ch养奶牛
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有