添加为VisualSVN的链接

时间:2012-12-21 14:57:40

标签: visual-studio svn tortoisesvn visualsvn

我已经找到了一个解决方案,我试图创建第二个可执行文件。这两个可执行文件共享大部分相同的文件,但有一些不同的文件,包括资源和应用程序图标等。

我创建了第二个项目,并将项目添加为链接。:

  1. 右键点击"添加现有项目"
  2. 浏览到它,
  3. 点击"添加" 下拉菜单,然后选择"添加为链接"
  4. 添加为链接意味着它只引用另一个文件夹中的其他文件而不会复制它。

    现在,当我尝试提交我的项目时,VisualSVN / SVN试图在他们所属的逻辑路径中添加SVN这些文件,从而导致大量错误,找不到该文件。它导致整个提交失败,并且是屁股的主要痛苦。

    有没有一种方法可以添加没有副作用的文件链接?我尝试链接的所有文件都已在同一个仓库中。

    更新

    也许我应该添加更多有关我想要完成的内容的信息,因为我愿意接受任何有助于我实现这一目标的建议。

    我有一个像这样的项目结构......或者我希望它像这样......

    MyProject
      /Common
        BusinessDataObjects (svn:external)
        ControlsLibrary (svn:external)
        OtherCommmonLib1 (svn:external)
        OtherCommonLib2 (svn:external)
      /Modules
        Module1
        Module2
        Module3
        ...
       Application1
       Application2 (shares all App1's files, except different .resx, icon, name, other minor differences)
       SetupProject1 (includes app1 and certain module dlls)
       SetupProject2 (includes app2 and certain module dlls)
    

    应用程序基本上是一个空shell(使用Prism),它加载安装在/ modules文件夹中的模块。我希望两个应用程序几乎完全相同,但我希望它们具有不同的名称和不同的图标。我想我可以通过将第一个项目中的文件作为链接添加到第二个项目来完成此操作,并简单地交换包含应用程序窗口标题,关于对话框等字符串的资源文件。但是随后VisualSVN或其他任何尝试过SVN的文件添加那些我不期待的项目。

    我需要能够开发模块和应用程序的shell项目。它们在任何方面都不稳定。我只是希望它们彼此接近副本,但是具有较小的命名差异。我想到了两个应用程序项目,我可以有两个安装项目,其中包括每个应用程序的输出以及该软件程序版本中应该包含的模块。

    我试图尽可能地使其变得万无一失,并且我希望避免更新对同一项目的外部引用。 (我也对此感到困惑,我会svn:相同回购的外部吗?)这听起来并不好,但这是我如何创建的主要想法两个几乎相同的应用。如果我无法让我的版本控制软件发挥作用,我不确定我会怎么做。

    我曾经建议我们只有一个版本的软件并且某些模块是升级版本,但有一些很好的理由他们不能真正做到这一点。

3 个答案:

答案 0 :(得分:1)

使用"添加为链接" 将文件添加到Visual Studio项目时,预计该文件不会复制到项目中文件夹中。

VisualSVN会考虑工作副本中项目的状态,甚至是当前解决方案中未包含的文件。但是,工作副本中不存在链接文件,因此无法跟踪。它不受版本控制。

由于您尝试链接的文件已经受版本控制(即它们存在于SVN存储库中),因此使用Externals Definitionssvn:externals属性)链接它们是有意义的。

另见TortoiseSVN Manual;它对svn:externals的描述非常好。

答案 1 :(得分:1)

您没有提及您的环境。但是,你提到你有一个解决方案。我假设你正在使用VisualStudio。

您是否尝试过AnkhSVN,它是VisualStudio Subversion的源代码控制提供程序? AnknSVN集成到VisualStudio中,就像Microsoft的Visual SourceSafe和TeamFoundation的本机版本控制系统一样。我相信您可以使用AnknSVN来执行您想要的链接,因为这些链接实际上是内部VisualStudio结构,而不是您在Unix系统中找到的实际符号或硬链接。

我通常会避免使用链接(我相信它们在Windows上被称为Junctions),因为它们根本无法跨操作系统工作。相反,您可以使用以下方法之一:

  • 使用构建系统复制文件,或创建所需的链接而不是版本控制系统。
  • 使用svn:externals进行关联。请注意这一点,因为svn:externals是指向Subversion URL的指针。

例如,如果我设置http://foo.com/svn/trunk/proj1以获得svn:externals头部的http://foo.com/svn/trunk/proj2链接,并通过将http://foo.com/svn/trunk/proj1复制到{来为项目1创建标记{1}},该项目仍然指向proj2主干的头部。 Project 2中的更改将改变我认为的稳定标记。始终将http://foo.com/svn/tags/REL-1.2/proj1指向稳定版本。

答案 2 :(得分:-2)

我没有VisualSVN的经验,我们使用没有那个问题的Ankhsvn。

http://ankhsvn.open.collab.net/