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

时间:2009-11-16 11:20:48

标签: svn version-control

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

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

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

  3. 您如何知道什么时候提交项目?特别是从头开始写的时候?

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

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

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

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

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

5 个答案:

答案 0 :(得分:4)

  1. 这取决于你。有些人认为许多项目的回购“足够大”,有些人认为共享编号很烦人并使其成为1:1的映射。你决定。
  2. 当然!每次发布时,都要对其进行标记,以便您可以轻松返回。每当你想要在大的东西上“隔离”时,就把它分开。
  3. 尽可能多地提交,将其视为备份工作。
  4. 我宁愿在那天停止工作或“会议”或其他任何事情之前做出承诺,这只会让我觉得我已经完成了某些事情,这对于动力是有好处的。
  5. 我将SVN备份到保存在银行金库中的硬盘上。 :)不像我应该经常或经常,但我正在努力改善这个例程。
  6. 在设置之后,我认为我没有直接访问它。
  7. 不确定那个,我使用的本地服务器点名域名很短(svn.unwind.se)。

答案 1 :(得分:2)

以下是我对此的看法:

  

当我创建一个回购时,它应该是   举办我的所有项目或只举一个?   运行导入后似乎很奇怪   关于我修改的几个项目   每个新项目的数量都在增加   加入。

这完全取决于您的品味:在一个回购中有多个项目可以带来好处(例如,将代码从一个项目复制到另一个项目),但是想要让其他人只访问一个项目,拥有一个大型存储库可能会让事情变得更加棘手。

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

  

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

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

此外:当你不确定是否要继续沿着这条路走时,你可能想尝试一些事情:创建一个分支,进行实验并将其合并回主干或抛弃整个分支。

  

您如何知道什么时候提交项目?特别是从头开始写的时候?

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

通过采取这些小步骤,我发现更容易回溯我所做的事情。如果我修复了某个bug,并且在一个月内我遇到了类似的问题,我可以很容易地确定修复的哪些部分以及什么不是。 (即:如果它在另一个提交中,它不是修复的一部分。:))我唯一的规则,这在团队中工作时尤其重要:不要提交破坏的代码。它可能是未完成的,但它不会伤害任何碰巧检查代码的人。

  

在夜晚结束时,你总是承诺你的工作吗?还是你把它留下来了?

我尝试在一天结束时提交(所以当我的计算机出现问题时,我有一个备份,或者如果我生病了,我的同事可以继续我离开的地方)。但只有我达到了可以安全承诺的程度。

  

您是否始终保留项目的导出副本?如果SVN DB borks怎么办?你能从borking恢复吗? ...

我没有整个存储库的结帐,我有存储库的备份。我从来没有遇到过SVN存储库的问题。

  

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

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

  

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

不,不是真的。除非您想要在生产服务器上签发发布的“归档”。

  

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

在* nix系统上,.svn目录已被隐藏(这就是为什么它们以点开头)。你不应该想在这些目录中乱七八糟。

  

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

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

答案 2 :(得分:1)

  1. 您可以拥有每个项目的回购或为许多链接项目使用单个回购;这真的取决于你。考虑到存储库的修订号是全局的,因此对项目的提交会增加整个存储库的修订数。
  2. 如果您需要分支您的项目,即使您单独工作,它们也是很好的实践。如果您只有主分支,则不需要它们。
  3. 我们通常在功能完成,重构完成等时提交;例如。我们不会在编辑过程中提交。
  4. 如果您自己工作,您可以经常提交备份工作。但是如果你在团队中工作,你应该坚持提交“工作代码”,否则你的同事可能会在工作副本中获得一些非编译代码。
  5. 我们的存储库每晚都会备份到服务器上的其他内容。
  6. 用户无需访问repos目录。备份管理员等应该可以访问它。
  7. svn有许多不同的GUI。看看这个:Comparison of Subversion clients

答案 3 :(得分:1)

  1. 这是个人品味的问题。我更喜欢单一的repo,更容易维护用户和权限以及备份
  2. 是的,即使在单人场景中,这两个功能也很有用。
  3. 每次提交都应该有意义。因此,在完成功能实现,修复错误或执行某些可以在日志消息中进行有意义描述的工作时提交。版本控制工具不是备份工具。
  4. 请参阅先前的观点,您不应仅因为您停止工作并在存储库中留下一些损坏的代码或半完成的任务而提交。
  5. 备份始终很重要,svn为您提供了不同的方法,请参阅官方书籍:http://svnbook.red-bean.com/nightly/en/svn.reposadmin.maint.html#svn.reposadmin.maint.backup
  6. 通常在设置后无需访问它。
  7. 尝试使用像TortoiseSvn这样的Svn客户端。

答案 4 :(得分:0)

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

根据您的喜好:每次登记时修订计数都会增加,与其所在的项目无关

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

标记版本(因此您可以根据报告者正在使用的任何版本来验证错误),分支处理更大的事情 - 如果它没有达到预期的效果,您可以随时返回主要版本分支

您如何知道什么时候提交项目?特别是从头开始写的时候?

我在创建项目之后就开始提交。

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

如果我有一些有效的东西(或者在任何情况下都没有破坏构建),我每天晚上都会这样做。不要检查不编译的代码(即使你单独工作这是一个好主意)。在开始完成另一项任务之前,每当我完成正在进行的任务时,我也会提交。