作为一名自由开发人员,我喜欢将我的所有开发都保留在我自己的SVN服务器中,以便持续集成以及记录所做的更改以及何时更改。
我现在正与一位内部使用SVN的客户合作,显然我希望我能够在他们的SVN服务器上与他们的开发团队合作。
这一般来说很棒,但这也会让我放弃我在这个项目上的工作实践而失去我的内部簿记方法。如果发生这种情况很多,那么我最终会得到相当宽松的工作标准 - 最终会因项目而异(我显然不想要)。
是否有一些创造性的方法可以充分利用这两个世界,并且在两个SVN服务器中提交代码都存在?我不介意在前面或每次提交/更新时做一些额外的工作来完成它。
svnsync看起来可能是一个不错的选择。有没人试过这个?有没有人有其他建议?
答案 0 :(得分:2)
我不确定问题是什么。您使用不同的SVN URL,但其他所有内容都相同。 “簿记”是什么意思?
也许归结为谁拥有代码 - 如果是他们,他们有权要求你使用他们的版本控制系统。而且,由于听起来您正在与开发团队合作,因此他们的数量超过了您。
由于涉及其他开发人员,您显然必须解决其存储库问题,以确保始终拥有最新代码,从而避免冲突等。
如果您担心保留代码的副本(假设这是合法的),有很多方法可以实现这一点,例如,定期将指向其服务器的工作文件夹导出到指向您的计算机上的另一个工作文件夹服务器和提交。
答案 1 :(得分:1)
您可以定期(每周?)svndump您的客户端存储库并将其导入您自己的服务器,以便您可以执行分析以进行计费或其他目的。
我能想到的唯一问题是你的客户对你这样做有多高兴。
答案 2 :(得分:1)
我可以在这里看到两种不同的方法,要么你继续在你的存储库中工作,那么当你觉得你的代码达到标准时,手动将它们放到他们的存储库中。另一种方法是查看svn commit钩子 - 即每当提交完成时运行的脚本。从这样的脚本我假设您可以轻松地对另一个存储库进行相同的提交。
我认为你的合同允许你自己保留代码,否则你几乎不得不做任何客户告诉你的代码。
答案 3 :(得分:0)
版本控制系统当然有助于代码的共享和管理。如果你使用的是两个存储库,那么很快就会变得非常混乱。我会顺其自然地使用公司要求的任何东西
答案 4 :(得分:0)
如果您只想列出您在Subversion中所做的更改(我猜,每周提交的数量,修复的问题列表......),您可以编写一个简单的Java应用程序来查询 any 您的更改的Subversion存储库。在那之后,这只是将您的应用程序指向正确的存储库的问题。
有两个易于使用的Subversion库,我对SvnKit没有特别的问题。
答案 5 :(得分:0)
使用客户端的存储库
一种解决方案是直接使用客户端的存储库。任何其他不属于那里的“东西”,只与您的簿记相关,例如您的项目管理,计时等,可以放在您的本地存储库中。你可以将这两个单独的工作副本分开,但你可以在本地存储库中设置一个指向客户端存储库的svn:external
,如果你想要有点棘手的话。
只要您和客户都对您的提交的细粒度感到满意,那就应该有效。您还可以考虑在客户端存储库中的分支中工作,并在对工作满意时合并到主干。它还有一个优势(对于您的客户),客户可以备份您可能喜欢的所有在制品。
使用Subversion集成git
另一种解决方案可能是在本地使用git,并使用其ability to work with Subversion。您可以在轻量级的本地分支中保持正在进行的工作。