2011-12-21 41 views
5

我是SVN的新手,我想使用TortoiseSVN将代码提交给SVN。我有C++头文件和源代码,但我不知道如何在将版本上传到SVN之前以高效的方式组织文件夹。关于人们通常如何做的任何建议?不同语言的代码结构有没有区别,例如C++或java。我应该遵循任何特定的规则吗?如何为C++代码组织SVN存储库

更新

因此,在检查答案后,我做了一些更清晰的事情。一个通常的文件夹结构是一个proyect如下:

/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 

至少我喜欢它的多媒体应用代码。

UPDATE 2

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

我想说这个,因为你右键点击导入的文件夹永远不会出现。我刚刚意识到,当我尝试它,也是toturials解释。

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

+0

从我的经验来看,最常见的事情是注意包括自动生成的文件和IDE用户文件。在共享项目上工作之前,你并没有注意到这些事情。 – 2011-12-21 12:04:01

+1

你的意思是错误日志,例如?其实我主要是在考虑文件夹结构和儿子,如何命名它们以及如何组织它们。 – 2011-12-21 12:18:04

+1

我的意思是从.resx文件生成的* .designer.cs文件。另外我知道你想要一个项目布局/命名,但我仍然在5年后自己努力,所以我可以建议环顾四周,大多数开源项目让你看看他们的源代码控制,找到你喜欢的东西并从那里。 – 2011-12-21 12:22:54

回答

9

这里是我如何构造我的树在编程项目(主要是从C/C++的角度):我自己

  • 分机—外部书面

    • /
      • SRC —源文件和头文件依赖;包含第三方库
        • LIBNAME-1.2.8
          • 包括 —头
          • LIB —编译LIB文件
          • Donwload。TXT —包含链接下载使用
      • IDE —我存储项目文件的版本在这里
        • VC10 —我通过IDE
      • 斌安排项目文件 —编译的二进制文件去这里
      • OBJ —编译器的编译文件
        • GCC —如果你的项目规模证明它,做一个单独的文件夹为每个编译器的文件
      • DOC任何
      • 自述的—文档
      • INSTALL
      • COPYING
      • makefile —自动生成IDE项目文件的东西。我更喜欢CMake。

    的几个注意事项:

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

    2. 上面列出的斜体文件和目录我不会添加到代码存储库。

    编辑:请注意,我使用的水银,没有SVN,所以结构上它专为该版本控制系统。无论如何,我从你的更新中看到你已经找到了你喜欢的一个。

  • +0

    谢谢,非常有用。 – 2011-12-21 12:23:10

    +0

    没有IDE的src似乎并不特别有用。如何在没有任何项目文件的情况下构建大型项目(无论是Makefile/CMakeFile/cvproj)。 – stijn 2011-12-21 12:26:54

    +0

    @stijn当然,您应该有一些makefile(我个人比较喜欢CMake)。我会将其添加到列表中,以避免混淆。 :) – 2011-12-21 12:28:36

    4

    向前迈出的一大步是确保您的所有项目都做外部构建,即将临时文件放在$ TEMP中,并将所有输出文件放在专用的bin/lib目录中。如果正确完成,这将使源代码仅包含源代码。名称中的内容除了“纯”源文件外,还要确保构建源文件所需的所有内容都位于存储库中:项目文件/生成器和资源。

    一旦你找到了正确的位置,很有可能你只需要将一些典型的项目生成文件(比如Visual Studio的* .suo)放到SVN的忽略列表中,然后就可以进行提交了。

    4

    基本上,你可以放在svn只是你想要的。您可能会考虑遵循的唯一标准是标准存储库布局:请参见here

    在项目中,您说得对,存在多个最佳做法。它们对于每种语言都是不同的。例如,一个Java包由命名空间组织。在C++的世界里我看到了两种主要方式如何组织它:

    • 每个类别插入页眉(.h)中,并在同一目录
    • 页眉和源内部的源文件(的.cpp)是分开的(所以你有一个文件夹,特别是头文件)这对于库是有用的,因此这个路径可以被上层项目使用。

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

    +0

    有用。我会尝试不同的方法,然后决定我最喜欢的东西。 – 2011-12-21 12:27:29

    4

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

    +0

    非常感谢,我很感激 – 2011-12-21 16:18:54