使用SVN进行项目代码管理

时间:2009-12-01 09:31:42

标签: .net svn tortoisesvn

我已经开始研究一个项目了。我想使用subversion存储这个项目。我已经安装了VisualSVN服务器和TortoiseSVN。

该项目由几个小项目组成。我每次都需要其中一些,其中一些不是。问题是:

  1. 我应该将整个项目存储在一个subversion项目目录中吗?
  2. soulution文件(* .sln)怎么样?它应该存储在SVN中吗?
  3. 关于项目是某种框架(稍后将在其他项目中使用)。但是每当我使用基础项目时,我都需要它。有没有方便的方法可以立即从不同的SVN目录中检出/导出我的基础和框架项目?
  4. 如果我只需要在项目的一部分工作,我该怎么办?

10 个答案:

答案 0 :(得分:5)

  1. 是的,简而言之 - 但您稍后可以改变主意

    subversion项目的典型目录结构是:

    project/branches
    project/trunk
    project/tags
    

    您最初将所有代码放在trunk中,然后在必要时创建标记和分支。

    您可能需要考虑最初将所有内容保存在一个svn项目文件夹结构中,因为它会更简单(您不必乱用解决方案文件)。

    如果您选择稍后将项目的中断部分放入单独的svn项目中,您可以执行'svn rename'并为它们创建标准分支,主干和标记文件夹。您只需要修改解决方案文件中的引用或使用svn:externals方法。

  2. 绝对 - 您应该将所有内容存储在不是由构建生成的存储库中。创建svn:忽略生成的文件夹(例如obj和bin目录)上的属性,因此当您忘记添加重要文件时,'svn status'将为您提供有用的反馈。

  3. 有一种机制svn:externals,它允许您创建到subversion存储库(或外部subversion存储库)中另一个位置的链接 - 这可能有助于您从单个文件夹中签出。您可能需要考虑对框架的特定标记进行svn:external引用,以便其他人对框架的更改不会破坏您的项目。

    svn:externals会让事情变得混乱,但请谨慎使用。

  4. 您可以在subversion

  5. 中的文件夹层次结构中的任何级别签出

答案 1 :(得分:2)

Subversion存储库通常有三个文件夹trunk,branches和tags。您将把项目放在主干中。如果它们没有直接关系,我会为每个项目创建一个存储库。

是的,我保留.sln文件,但忽略.suo和cproj.user文件。我也忽略了bin和obj文件夹。

如果您将“框架”项目保存在一个存储库中,只需检查trunk文件夹即可。如果您将其保存在另一个存储库中,则可以查看externals

的概念

您通常会检查整个行李箱,即使您需要在项目的一小部分工作。

SVN Book可以帮助您了解更多信息。

答案 2 :(得分:1)

将所有内容存储在一个目录中。在目录的基础应该是解决方案文件。这也应该存储在SVN中(使得在新机器上检查SVN的解决方案更加容易)。

对于框架项目 - 尝试将其包含在解决方案中,然后在解决方案的基础项目中引用它。

如果您只需要处理项目的一部分,您可以打开整个解决方案,只需处理您需要的部分,或者只是检查该项目。

答案 3 :(得分:1)

我已经设置了我们的内部SVN回购,如下所示:

SVN-Root
    - trunk
        - Projects (for each project one folder,
                    Solutions are in separate folder)
    - tag
        - Projects
    - branch
        - Projects

尽管如此,我读到了一个不同的设置:

SVN-Root
    - Solution1
        - trunk
        - tag
        - branch
    - Solution2
        - trunk
        - tag
        - branch

答案 4 :(得分:1)

由于您正在考虑使用多个SVN存储库,因此应考虑以下事项:在SVN存储库中提交是原子的。提交适用于多个存储库的更改不是。

即使你是唯一一个使用SVN存储库的人,但经验法则是系统的设计允许(理论上)任何人随时更新,并且不会因为不良而获得无法编译的源代码。定时。

总之,如果可能需要同时对文件A和B应用更改以保持项目可编辑,则A和B应位于同一存储库中。

答案 5 :(得分:0)

  1. 您可以根据目录结构存储项目。经验法则是一个svn目录的一个csproject
  2. 是的,您应该将sln存储在SVN中。您可以将此sln放在项目目录之一(通常位于GUI csproject文件夹中)
  3. 为此你需要使用SVN命令行来做;你可以为此编写一个批处理脚本。
  4. 您可以查看相关项目并进行处理。

答案 6 :(得分:0)

1。)你喜欢它。这完全取决于你。你想处理几个subversion文件夹还是只想处理一个?

2。)是的,当然。 只保留用户特定的文件(如.user)。

3。)不,好吧,也许吧。如果您将AnkhSVN用作Visual Studio项目,则可以更新解决方案,并使用它更新所有项目文件夹。

4。)仅使用该项目; - )

答案 7 :(得分:0)

您的subversion存储库的设置是一个主题,其中存在许多不同的意见。以下答案基于我的个人经验和偏好:

  1. 我建议将项目的多个模块存储在一个存储库中。这样可以简化整个项目的检查。当您将子项目放在主项目中的子目录中时,也可以自己检查各个子项目。
  2. 我不确定* .sln文件是什么,但如果需要构建项目,它应该在您的存储库中。如果它是生成的(或者可以很容易生成)并且是系统依赖的,那么它不应该是您的存储库的一部分。
  3. 可以使用svn的externals feature包含其他存储库的一部分。
  4. 请参阅第1点的答案。

答案 8 :(得分:0)

可能取决于您希望如何组织事物,各个部分有多大以及哪些部分适合您。试验一下。

您可能想要研究的一件事是外部:(http://svnbook.red-bean.com/en/1.0/ch07s03.html)。这允许您从其他存储库中提取文件和文件夹。

答案 9 :(得分:-1)

对于ME - 经验法则是1 SVN REPO = 1 SOLUTION

我也会检查.sln文件,并与所有参与项目的人一起强制执行相同的目录结构