use*_*119 5 svn version-control
刚开始使用SVN.这是我在阅读了几篇文章,教程和玩了几个小时之后的一组非常基本的问题.
当我创建一个回购时,它应该包含我的所有项目还是只有一个?在一些项目上运行导入后,我添加的每个新项目的修订计数都会增加,这似乎很奇怪.
如果我自己工作,标签和分支仍然是必要的和良好的做法?
你怎么知道何时提交一个项目?特别是从头开始写它?
在夜晚结束时,你总是承诺你的工作吗?或者你把它留下来检查?
您是否始终保留项目的导出副本?如果SVN DB borks怎么办?你能从borking恢复吗?如果它确实是bork并且我只有一个签出的副本,我是否必须自己删除所有的.svn目录?这样做会等同于导出的副本吗?您是否将导出的标签存档?
我是否需要直接访问存储库目录?隐藏这个目录会更好吗?(使用svn)
是否有更简单的方法来进行结账并导入然后输入整个文件路径(file:/// Applications/MAMP/SVN /)?我可以设置一次我将永远使用的回购吗?
编辑感谢清除所有这些问题.还有关于gui的建议.我通过textmate建立起来,令人难以置信的令人难以置信.仍然必须在CL上进行初始导入和结帐但是......
这是我对此的看法:
当我创建一个存储库时,它应该包含我的所有项目还是仅包含一个项目?奇怪的是,在几个项目上运行导入后,我的修订计数随着每个添加的新项目而增加。
这完全取决于您的喜好:在一个存储库中拥有多个项目(例如,将代码从一个项目复制到另一个项目)有好处,但如果您只想让其他人访问单个项目,则拥有一个大存储库可以让事情变得有点棘手。
关于修订号:不用担心。这些数字仅用于管理,因此您可以轻松合并代码、返回到特定版本等。
如果我自己工作,标签和分支仍然是必要的和良好的做法吗?
绝对地!特别是如果您想将代码发布到其他人或其他地方(例如在服务器上)。您会想知道您发布的是哪个版本(标记)。您可能希望修复旧版本中的某些内容,同时又不想被在进一步开发(分支)过程中所做的更改所困扰。
此外:当你不确定是否要继续这条路径时,你可能想尝试一些东西:创建一个分支,进行试验,然后将其合并回主干或丢弃整个分支。
您如何知道何时该提交项目?尤其是从头开始编写时?
我喜欢做出小承诺。创建了样板项目?承诺吧。添加了功能 X?承诺吧。重构了你的 FooProcessor 代码?承诺吧。
通过实施这些小步骤,我发现更容易回溯我所做的事情。如果我修复了某个错误,并且在一个月内遇到类似的问题,我可以轻松确定哪些是修复的一部分,哪些不是。(也就是说:如果它在另一个提交中,则它不是修复的一部分。:))我拥有的唯一规则,在团队中工作时尤其重要:不要提交损坏的代码。它可以是未完成的,但它不应该伤害任何碰巧检查代码的人。
到了晚上,你总是投入你的工作吗?或者你把它留在检查状态吗?
我尝试在一天结束时做出承诺(这样,当我的计算机发生问题时,我有一个备份,或者如果我生病了,我的同事可以从我停下来的地方继续)。但前提是我已经达到了可以安全做出承诺的地步。
您是否始终保留项目的导出副本?如果SVN数据库死机了怎么办?你能从无聊中恢复过来吗?...
我没有签出整个存储库,我有存储库的备份。不过我从来没有遇到过使用 SVN 存储库的问题。
...如果它确实失败了并且我只有一个签出的副本,我是否必须自己删除所有 .svn 目录?这样做是否等于导出副本?...
取决于您想要实现的目标。但删除.svn文件实际上与 svn 导出相同。
...您是否将导出的标签存档到其他地方?
不,不是真的。除非您想将生产服务器上版本的签出称为“存档”。
我是否需要直接访问存储库目录?隐藏这个目录会更好吗?(.svn)
在 *nix 系统上,.svn目录已经隐藏(这就是它们以点开头的原因)。不过,您不应该想在这些目录中乱七八糟。
有没有更简单的方法来进行签出和导入,然后输入整个文件路径(file:///Applications/MAMP/SVN/)?我可以设置一个我将永远使用的存储库吗?
正如其他人已经提到的:看看 Subversion 的 GUI。我个人喜欢TortoiseSVN。