Subversion:阶段文件显式提交?

时间:2009-03-12 14:25:17

标签: git svn commit

我已经习惯了git的方式来触摸你想要提交的每个文件,并且在它的同时,仔细检查差异。现在在工作中我必须使用svn并且我一直在意外地提交东西。有没有办法让subversion的行为像git一样,我必须明确告诉每个文件应该包含在下一次提交中?

6 个答案:

答案 0 :(得分:11)

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

答案 1 :(得分:7)

在命令行上指定文件

svn commit -m“我的提交消息”folder / file1.c

答案 2 :(得分:6)

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

答案 3 :(得分:1)

要遵循Rory的回答,如果要强制执行显式文件提交行为,可以编写一个批处理或shell脚本,检查以确保除了提交消息之外至少有一个参数,如果没有,则返回错误“T。这至少会提醒您明确地将文件名放入。

我总是在提交之前做一个svn stat和diff,所以统计数据通常会让我想起可能还有一些我不想办理的事情。

答案 4 :(得分:0)

我通常从某些IDE(如Emacs)提交,我可以手动选择要提交的文件集。

答案 5 :(得分:0)

Subversion按默认方式工作。添加已添加已删除已修改的项目,直到您使用在其中指定文件的提交命令时才会提交想要提交。如果您正在使用命令行并且只运行“svn commit”而没有任何其他参数,那么我可以看到您的问题可能是什么,在这种情况下,我将使用其他人建议的更改集功能,并使用提交时间作为自我代码 - 回顾一下所有变化的时间,并确定哪些变化进入,哪些不进入。

我还要补充说,只做部分提交是一个坏习惯,只有当你在共享分支中非常清楚自己在做什么时才应该这样做,因为它是最常见的方法之一。打破构建对不包含在同一提交中的意外相互关联的更改。

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

同样顺便说一句,使用TortoiseSVN可以更轻松地管理将进入任何给定提交的变更集和樱桃挑选文件。如果您在Windows上我强烈建议您出于此原因进行检查。