如何组织C ++代码的SVN存储库

时间:2011-12-21 12:00:29

标签: c++ svn tortoisesvn

我是SVN的新手,我想使用TortoiseSVN向SVN提交代码。我有C ++标题和代码的来源,但我不知道如何在将版本上传到SVN之前以有效的方式组织文件夹。关于人们通常如何做的任何建议?不同语言的代码结构之间是否有任何区别,例如C ++或java。我应该遵守任何具体规则吗?

更新

因此,在检查答案后,我让事情变得更加清晰。对于一个项目,通常的文件夹结构如下:

/trunk
/branches
/tags

但我也找到了一个我喜欢的类似结构,它是:

/trunk                  #Keep it to developement mode always.
    /samples            #samples of use
    /modules            #software modules
       /project_modName
           /include     # .hpp files
           /src         # .cpp files
    /test               #unitary tests
/branches               #experimental developements (copies of trunk at various stages)
/tags                   #estable versions
/extras
    /3rdparty           #libs
    /data               #necessary data for developement
    /doc                #documentation
    /resources          #for window applications

至少我喜欢多媒体应用程序代码。

更新2

此更新仅用于解释我如何创建存储库。我创建了一个名为 structure_svn 的文件夹。在里面我创建了上面显示的结构。我右键单击父文件夹并选择导入。在URL中我写了文件夹路径(file:/// c:/ svn_repos),所以自动在svn_repos下创建结构,没有文件夹structure_svn

我想注意这一点,因为您右键单击要导入的文件夹将永远不会出现。我刚刚意识到,当我尝试它的时候,并且也会对它进行解释。

下一步是成功地将我的代码划分到创建的结构中。

4 个答案:

答案 0 :(得分:9)

以下是我在编程项目中构建树的方法(主要是从C / C ++的角度来看):

  • /
    • src - 我自己编写的源文件和头文件
    • ext - 外部依赖;包含第三方库
      • LIBNAME-1.2.8
        • 包含 - 标题
        • lib - 编译的lib文件
        • Donwload.txt - 包含下载所用版本的链接
    • ide - 我将项目文件存储在此处
      • vc10 - 我按IDE安排项目文件
    • bin - 已编译的二进制文件转到此处
    • obj - 编译器的构建文件
      • gcc - 如果您的项目大小合理,请为每个编译器的文件创建一个单独的文件夹
    • doc - 任何类型的文档
    • 自述
    • INSTALL
    • 复印
    • makefile - 自动生成IDE项目文件的东西。我更喜欢CMake。

一些注意事项:

  1. 如果我正在编写一个库(我正在使用C / C ++),我将首先在两个名为“src / include”和“src / source”的文件夹中组织我的源文件,然后按模块。如果它是一个应用程序,那么我将按模块组织它们(标题和来源将放在同一个文件夹中)。

  2. 我在 italics 中列出的文件和目录我不会添加到代码存储库中。

  3. 编辑:请注意,我使用的是Mercurial,而不是SVN,因此上面的结构是为该版本控制系统量身定制的。无论如何,我从你的更新中看到你已经找到了一个你喜欢的。

答案 1 :(得分:4)

向前迈出的一大步是确保所有项目都进行源外构建,即将临时文件放在$ TEMP中,并将所有输出文件放在专用的bin / lib目录中。如果操作正确,这将为您提供仅包含源的源目录。名称中的内容..除了'纯'源文件外,还要确保构建源所需的一切都在存储库中:项目文件/生成器,资源。

一旦你正确地实现了这一点,你很有可能只需要将一些典型的项目生成文件(如* .suo for Visual Studio)放入SVN的忽略列表中,然后就可以提交了。

答案 2 :(得分:4)

基本上你可以放入你想要的svn。您可以考虑遵循的唯一标准是标准存储库布局:请参阅here

在项目中,您确实存在多种最佳实践。每种语言都有所不同。例如,Java包由命名空间组织。在C ++世界中,我已经看到了两种主要的组织方式:

  • 将每个类放入同一目录中的标题( .h)和源文件( .cpp)
  • 标题和来源是分开的(因此您有一个特别是标题的文件夹)这对于图书馆非常有用,因此上层项目可以使用此路径。

然后你需要一个用于第三方库的文件夹,另一个用于目标文件和其他文件夹,例如构建文件或文档。

答案 3 :(得分:4)

如果你是svn的noob,你在下一个Link有一个很好的解释!!