Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/svn/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Svn 关于设置subversion存储库的建议_Svn_Version Control - Fatal编程技术网

Svn 关于设置subversion存储库的建议

Svn 关于设置subversion存储库的建议,svn,version-control,Svn,Version Control,我们的团队正在加速通过SVN使用源代码控制。我们目前正在使用一些测试存储库来适应这个过程 我们几乎准备好将其投入全天候使用 我们只构建小型到中型/大型的web应用程序,其中大多数应用程序共享相同的核心(但在LAMP/Win上有所不同),但都是以某种方式定制的。存储库中可能有数百个项目。此外,我们通常为一个组织做多个项目 我们有LAMP和Windows开发人员。(我认为这使问题与其他问题有所不同) 您对如何构建存储库有什么建议吗?我认为一个存储库(当然是备份的)和下面的各个项目目录就足够了: /u

我们的团队正在加速通过SVN使用源代码控制。我们目前正在使用一些测试存储库来适应这个过程

我们几乎准备好将其投入全天候使用

我们只构建小型到中型/大型的web应用程序,其中大多数应用程序共享相同的核心(但在LAMP/Win上有所不同),但都是以某种方式定制的。存储库中可能有数百个项目。此外,我们通常为一个组织做多个项目

我们有LAMP和Windows开发人员。(我认为这使问题与其他问题有所不同)


您对如何构建存储库有什么建议吗?

我认为一个存储库(当然是备份的)和下面的各个项目目录就足够了:

/usr/share/code_repository
   /base
      /trunk
      /branches
      /tags
   /project1
      /trunk
      /branches
      /tags
   /project2
      /trunk
      /branches
      /tags
   ...
所以base是核心代码,project1,project2,…projectN将包含base的变体。当您签出projectN时,您还将签出base并从Project1中获得指向base的链接

这样做的另一种选择是简单地进行一次回购,其中包含一个核心,并为每种变化进行分支。也就是说,如果核心是一个大的块,那么你的变体就是简单的变体


这似乎更像是一个代码打包体系结构的问题,而不是版本控制结构的问题。

我认为一个单独的存储库(当然是备份的),下面有单独的项目目录就足够了:

/usr/share/code_repository
   /base
      /trunk
      /branches
      /tags
   /project1
      /trunk
      /branches
      /tags
   /project2
      /trunk
      /branches
      /tags
   ...
所以base是核心代码,project1,project2,…projectN将包含base的变体。当您签出projectN时,您还将签出base并从Project1中获得指向base的链接

这样做的另一种选择是简单地进行一次回购,其中包含一个核心,并为每种变化进行分支。也就是说,如果核心是一个大的块,那么你的变体就是简单的变体

这似乎更像是一个代码打包体系结构的问题,而不是版本控制结构的问题。

正确的答案是“任何最适合您的东西”

有人会告诉你这种方法比那种方法的优点,但在一天结束时,有project->{trunk,tags,branchs}或{trunk,tags,branchs}->project,或者,如果您有一个发布分支,或者如果您将这些分支重命名为其他分支,或者在其中包含其他命名项,或者删除一些命名项,那么这些都取决于您和您的同事如何工作,以及什么最适合您的开发周期

然而,根据你所说的,我建议如下:

repository
    core
        trunk
        branches
        tags
    project1
        trunk
        branches
        tags
    project3
        trunk
        branches
        tags
这样做的好处是,您可以将每个项目链接到core的不同版本,这些版本将位于core/tags文件夹中,同时仍然允许开发core。这只是我的建议。你的心态可能会有所不同,正确的答案是“一切对你最有利”

有人会告诉你这种方法比那种方法的优点,但在一天结束时,有project->{trunk,tags,branchs}或{trunk,tags,branchs}->project,或者,如果您有一个发布分支,或者如果您将这些分支重命名为其他分支,或者在其中包含其他命名项,或者删除一些命名项,那么这些都取决于您和您的同事如何工作,以及什么最适合您的开发周期

然而,根据你所说的,我建议如下:

repository
    core
        trunk
        branches
        tags
    project1
        trunk
        branches
        tags
    project3
        trunk
        branches
        tags

这样做的好处是,您可以将每个项目链接到core的不同版本,这些版本将位于core/tags文件夹中,同时仍然允许开发core。这只是我的建议。您的思维方式可能会有所不同

将不同的项目创建为不同的存储库(在同一台机器上)。因此,您可以分别控制每个项目的更改邮件列表:)

创建不同的项目作为不同的存储库(在同一台计算机上)。因此,您可以分别控制每个项目的更改邮件列表:)

这是一个主观问题,因此您可能需要修改标记

假设你在询问开发项目,你必须澄清你在做什么样的开发。不同的语言或项目类型通常会导致不同的“标准”

从CVS继承的传统SVN结构是将
主干
分支
标记
放在主项目目录的旁边。对于每个单独的项目目录,都会重复该操作

对于相互依赖的项目,我个人更喜欢

root/somepath
  trunk
    myproject
  branches
    branch1
      myproject
    branch2
      myproject
  tags
    tag1
      myproject
    tag2
      myproject
这样可以更轻松地检出使用相同标记/分支标记的所有项目


但这在很大程度上取决于您的构建脚本以及您计划让开发人员或用户签出的方式。最好的是什么对您的项目来说是合乎逻辑和高效的。

这是一个主观问题,因此您可能需要修改标记

假设你在询问开发项目,你必须澄清你在做什么样的开发。不同的语言或项目类型通常会导致不同的“标准”

从CVS继承的传统SVN结构是将
主干
分支
标记
放在主项目目录的旁边。对于每个单独的项目目录,都会重复该操作

对于相互依赖的项目,我个人更喜欢

root/somepath
  trunk
    myproject
  branches
    branch1
      myproject
    branch2
      myproject
  tags
    tag1
      myproject
    tag2
      myproject
这样可以更轻松地检出使用相同标记/分支标记的所有项目


但这在很大程度上取决于您的构建脚本以及您计划让开发人员或用户签出的方式。对你的项目来说,最好的是合乎逻辑且高效的方法。

你如何构建回购协议可能在很大程度上取决于发行周期。当您开发新版本的common core时,是否会立即向所有客户推出?或者,当每个客户都需要新功能时(因此,核心需要新功能),您会进行增量推出吗

如果你升级核心时向所有人推广,那么你可能