5

我已经非常习惯 git 必须触摸您要提交的每个文件的方式,并且在执行此操作时,请仔细检查差异。现在在工作中我必须使用 svn,而且我一直在不经意地提交一些东西。有没有办法让 subversion 表现得像 git,因为我必须明确告诉每个文件应该包含在下一次提交中?

4

6 回答 6

11

另一种方法是在工作中使用 git-svn 桥接器,除非有理由说明你不能这样做。没有人,但你必须知道你实际上在使用 Git。这样,您在实际使用 Subversion 的同时获得 Git 的所有好处。

于 2009-03-12T14:41:33.750 回答
10

在命令行上指定文件

svn commit -m "我的提交信息" 文件夹/file1.c

于 2009-03-12T14:43:12.670 回答
6

您可以创建一个仅列出您要提交的文件的变更集,然后提交该变更集。如果您在完成更改集后勤于删除更改集,并且在没有更改集的情况下从不提交,我认为这对您有用。更简单的解决方案是使用图形客户端(例如 TortoiseSVN,但所有平台都有其他具有类似功能的客户端),它会在提示您输入登录消息时向您显示将要提交的文件列表。然后,如果您单击“提交”而不查看它们,那不是因为它没有告诉您它将做什么:)

于 2009-03-12T14:34:21.770 回答
1

按照 Rory 的回答,如果您想强制执行显式文件提交行为,您可以编写一个批处理或 shell 脚本来检查以确保您至少有一个除提交消息以外的参数,如果没有,则返回错误。这至少会提醒您明确输入文件名。

无论如何,我总是在提交之前做一个 svn stat 和 diff,所以 stat 通常会提醒我可能有些事情我还不想检查。

于 2009-04-14T17:44:38.260 回答
0

我通常从一些 IDE 提交,比如 Emacs,我可以在其中手动选择要提交的文件集。

于 2009-03-12T14:36:07.803 回答
0

Subversion 默认按照你想要的方式工作。添加删除修改的添加项是暂存的,并且在您使用指定要提交的文件的 commit 命令之前不会提交。如果您使用命令行并且只运行“svn commit”而没有任何其他参数,那么我可以看到您的问题可能是什么,在这种情况下,我将使用其他人建议的变更集功能,并将提交时间用作自我代码- 审查时间以浏览所有更改并决定哪些进入,哪些不进入。

我还要补充一点,只做部分提交是一个坏习惯,只有在你非常清楚自己在共享分支中所做的事情时才应该这样做,因为这是破坏构建的最常见方法之一对未包含在同一提交中的意外相关更改执行操作。

如果我有要单独提交的更改,我会做什么并向其他人推荐是为我当时不感兴趣提交的更改创建一个补丁或一组补丁,然后从我的工作副本。现在工作副本只有我要提交的更改,我将通过手动测试或单元测试来重建并验证正确性,然后只有当所有这些都通过时,才进行自我代码审查和提交。我认为这种方式是与一大群人互动的最安全方式,尤其是在您进行复杂更改时。这个过程也可以变得更容易,svn 支持客户端搁置功能,通过单个命令将更改放入名称类似于变更集的临时存储中。

Also BTW, using TortoiseSVN makes it a lot easier to manage changesets and cherry picking files that will go into any given commit. If your on Windows I highly recommend checking it out for that reason.

于 2011-07-09T13:04:35.757 回答