学习SVN - 简单的初学者问题

use*_*119 5 svn version-control

刚开始使用SVN.这是我在阅读了几篇文章,教程和玩了几个小时之后的一组非常基本的问题.

  1. 当我创建一个回购时,它应该包含我的所有项目还是只有一个?在一些项目上运行导入后,我添加的每个新项目的修订计数都会增加,这似乎很奇怪.

  2. 如果我自己工作,标签和分支仍然是必要的和良好的做法?

  3. 你怎么知道何时提交一个项目?特别是从头开始写它?

  4. 在夜晚结束时,你总是承诺你的工作吗?或者你把它留下来检查?

  5. 您是否始终保留项目的导出副本?如果SVN DB borks怎么办?你能从borking恢复吗?如果它确实是bork并且我只有一个签出的副本,我是否必须自己删除所有的.svn目录?这样做会等同于导出的副本吗?您是否将导出的标签存档?

  6. 我是否需要直接访问存储库目录?隐藏这个目录会更好吗?(使用svn)

  7. 是否有更简单的方法来进行结账并导入然后输入整个文件路径(file:/// Applications/MAMP/SVN /)?我可以设置一次我将永远使用的回购吗?

编辑感谢清除所有这些问题.还有关于gui的建议.我通过textmate建立起来,令人难以置信的令人难以置信.仍然必须在CL上进行初始导入和结帐但是......

Mar*_*ent 2

这是我对此的看法:

当我创建一个存储库时,它应该包含我的所有项目还是仅包含一个项目?奇怪的是,在几个项目上运行导入后,我的修订计数随着每个添加的新项目而增加。

这完全取决于您的喜好:在一个存储库中拥有多个项目(例如,将代码从一个项目复制到另一个项目)有好处,但如果您只想让其他人访问单个项目,则拥有一个大存储库可以让事情变得有点棘手。

关于修订号:不用担心。这些数字仅用于管理,因此您可以轻松合并代码、返回到特定版本等。

如果我自己工作,标签和分支仍然是必要的和良好的做法吗?

绝对地!特别是如果您想将代码发布到其他人或其他地方(例如在服务器上)。您会想知道您发布的是哪个版本(标记)。您可能希望修复旧版本中的某些内容,同时又不想被在进一步开发(分支)过程中所做的更改所困扰。

此外:当你不确定是否要继续这条路径时,你可能想尝试一些东西:创建一个分支,进行试验,然后将其合并回主干或丢弃整个分支。

您如何知道何时该提交项目?尤其是从头开始编写时?

我喜欢做出小承诺。创建了样板项目?承诺吧。添加了功能 X?承诺吧。重构了你的 FooProcessor 代码?承诺吧。

通过实施这些小步骤,我发现更容易回溯我所做的事情。如果我修复了某个错误,并且在一个月内遇到类似的问题,我可以轻松确定哪些是修复的一部分,哪些不是。(也就是说:如果它在另一个提交中,则它不是修复的一部分。:))我拥有的唯一规则,在团队中工作时尤其重要:不要提交损坏的代码。它可以是未完成的,但它不应该伤害任何碰巧检查代码的人。

到了晚上,你总是投入你的工作吗?或者你把它留在检查状态吗?

我尝试在一天结束时做出承诺(这样,当我的计算机发生问题时,我有一个备份,或者如果我生病了,我的同事可以从我停下来的地方继续)。但前提是我已经达到了可以安全做出承诺的地步。

您是否始终保留项目的导出副本?如果SVN数据库死机了怎么办?你能从无聊中恢复过来吗?...

我没有签出整个存储库,我有存储库的备份。不过我从来没有遇到过使用 SVN 存储库的问题。

...如果它确实失败了并且我只有一个签出的副本,我是否必须自己删除所有 .svn 目录?这样做是否等于导出副本?...

取决于您想要实现的目标。但删除.svn文件实际上与 svn 导出相同。

...您是否将导出的标签存档到其他地方?

不,不是真的。除非您想将生产服务器上版本的签出称为“存档”。

我是否需要直接访问存储库目录?隐藏这个目录会更好吗?(.svn)

在 *nix 系统上,.svn目录已经隐藏(这就是它们以点开头的原因)。不过,您不应该想在这些目录中乱七八糟。

有没有更简单的方法来进行签出和导入,然后输入整个文件路径(file:///Applications/MAMP/SVN/)?我可以设置一个我将永远使用的存储库吗?

正如其他人已经提到的:看看 Subversion 的 GUI。我个人喜欢TortoiseSVN。