?构建修订控制系统(SVN)以处理依赖关系

时间:2009-06-12 22:31:40

标签: svn directory dependencies components structure

多年来,我一直在以简单的方式编程:我将源文件保存在由语言和项目组织的目录中,偶尔进行手动备份,如果我很聪明,我会在尝试之前复制新版本;这就是它。

我最近决定开始使用版本控制。在查看了大量文章和页面,并尝试了不同的文章和页面后,我最终选择了Subversion(尽管由于BASE,它的规模翻了一倍)。


我现在需要一些关于我无法找到有用信息的方面的建议。首先,我要检查我是否有使用RCS的基本过程:

  1. 将我的所有项目导入SVN存储库
  2. 删除原件
  3. 从存储库中签出项目
  4. 继续努力
  5. 提交
  6. 就是这样吗?那么新项目呢?我是否必须在文件夹中创建一个新项目然后导入它?


    我也遇到了目录结构的问题,但首先,我应该布置我的设置。我是一名在家用机器上工作的开发人员。我的Data目录中有以下几种布局:

      X:\Data
          \H
            \3rdParty
              \Graphics
            \Controls
              \ThisControl
              \ThatControl
            \Libraries
            \Classes
              \CFoo
              \CBar
          \VC
            \Big
              \CoolApp
                \res
            \Small
              \CoolerApp
                \res
                \misc
            \Test
              \CFooTest
    

    ......等等。

    我在IDE的Include路径中经常使用几个头目录(例如 3rdParty \ Graphics Classes \ CFoo 等)。之前的依赖关系已经存在问题,但现在使用RCS,情况更糟。例如, CoolApp 可能包含 ThisControl CFoo 。以前,这可能不太理想,因为如果我在 CoolApp 上修改 CFoo 并打破它,其他使用它的应用程序如 CoolerApp 因此也会被打破。

    我这样做的原因不是复制 CFoo 等。人。 CoolApp 以及其他人的目录是因为尝试将每个副本的更新合并回 \ H 文件夹中的主副本而烦恼。

    我原以为通过使用正式的RCS,可以避免这种问题。但是,现在发生的事情是,当我将项目从 \ VC \ CoolApp 等导入SVN存储库时,组件如 CFoo ,* Libraries \ **因为它们在外部目录中而没有被包括在内,因此没有版本化 - 从而使整个观点失败。

    我正在寻找有关如何处理此类情况的提示。例如,如果我在 \ H 中有 CWidget ,并且 WidgetTest (包含 CWidget 的测试容器)在< em> \ VC ,然后我将如何构建这样的东西,使得 WidgetTest CWidget 得到版本化,同时为其他版本尽可能地简化它使用 CWidget 来包含和使用最新版本的应用程序?


    此外,我只能将我的所有项目导入到同一个存储库目录中,丢失 Big \ Small \ Test \ 等结构。我无法让Subversion保持这一点。


    最后,原始项目目录变成了什么?我已经看过至少有一篇文章说,一旦将它们导入存储库就可以删除它们。如果是这样的话,我可能只是把它们拉上来把它们拿走。



    哦,我目前使用我的Apache服务器设置Subversion,以及安装了VisualSVN,SVNServe和CollabNet SVN Server。我已经让每个人都去工作,但是我会喜欢一些建议,因为我确定我只需要一个。



    非常感谢你。

2 个答案:

答案 0 :(得分:2)

颠覆书免费在线提供了几个建议的存储库配置:

http://svnbook.red-bean.com/

此页面提供了进一步阅读的良好链接:

http://svnbook.red-bean.com/en/1.5/svn.tour.importing.html#svn.tour.importing.layout

关于SVN的一个非常好的事情,对于CVS来说并非如此,因为移动目录非常简单。因此,不要感到有压力想出一个“最终”组织权利的蝙蝠。做一些有效的事情,玩结构,直到你更喜欢它。

另外值得一提的是,SVN对数据使用了写时复制技术。因此,随时随地制作整个目录的“svn cp”副本。

答案 1 :(得分:2)