多个SVN中的一个文件夹

时间:2016-04-29 08:19:08

标签: svn

所以我有这个尴尬的"一个女孩两个杯子"我们使用SVN撰写研究论文的情况。我们有一个带有书目引用的公共数据库(我们科学家称之为引用),它被保存在一个单独的文件夹中,并被我们编写的所有论文使用。结构如下所示:

[repository on server A]
    PaperA
        paperA.tex % uses "../references/refs.bib"
    PaperB
        paperB.tex % uses "../references/refs.bib"
    PaperC
        paperC.tex % uses "../references/refs.bib"
    References
        refs.bib

到目前为止一切顺利。

现在我需要与来自不同大学的同事合作,这些同事无法访问此SVN(我不能为那些人制作访客帐户,因为有些荒谬"不是我们的政府雇员/硬件用法"规则)。所以我需要做的是创建一个他们也可以访问的公共存储库:

[repository on server B]
    CollaborativePaper
        paper.tex % will use "../references/refs.bib"
    references
        refs.bib % this now exists in two different repos

我想知道是否有办法保持references文件夹在两个回购之间以某种方式同步?我想我在Linux中所做的将是同一个文件/目录的符号链接,它将被提交给两个repos,所以每次我从一个检查更改时,我可以将它提交给另一个而不实际复制任何文件手动和合并将被处理。但是我在Windows中没有那么幸运。

我正在调查svn:external项目,这在这种情况下会很棒,除了来自不同大学的同事无法访问这两个回购,因此无用。

我也在寻找供应商的分支机构,但这些基本上都是手工复制的文件名称,并没有为我同步这两个回购(或者至少是我的理解)。

我还在研究一个嵌套的工作副本,这个副本对我个人而言,但是嵌套文件(refs.bib)永远不会被提交到协作回购中,所以来自不同大学的同事们赢了能够使用它/对其进行更改。

在Windows中,在不同服务器上运行的两个SVN存储库中是否存在单个物理文件夹?

编辑:虽然这类似于Same working copy of the code with 2 SVN servers(这本身就是另一个SO问题的回答),但也存在一些差异。第一个问题How to synchronize two Subversion repositories?假设用户拥有两台服务器的凭据。这不是真的。第二个Can I have one project in two SVN repositories?假定没有合作(OP只是希望他的文件在周末安全,直到他星期一来到办公室提交)。第三个SVN: one working copy, two repositories?是两者的混合。这些问题的答案都没有为我提供可行的解决方案。

1 个答案:

答案 0 :(得分:2)

  1. 使用DVCSes(任何)而不是SVN,你会在这样的“分布式”团队中减少头痛(我会推荐Mercurial使用subrepos,而不是 Git,任何东西
  2. 是的,外部是正确答案,只是略显复杂:
    • 在两所大学都可以访问的外部主机上,必须创建用于存储References文件夹的存储库
    • 您的本地References必须移至REMOTE(加载|转储),必须删除物理文件夹并替换为外部定义(建议两个单独的提交)
    • 外国同事还将外部References添加到他们自己的仓库(或使用与References之外的基础树相同的基础设施?)
  3. 在较低级别:

    • 是的,本地存储库中只有一些额外的元数据“这个节点必须从HERE获得”
    • 用于本地存储库外部的客户端工作副本(在本地存储库中定义)将生成嵌套工作副本,链接到远程仓库(您可以在其中显示另外的.svn文件夹检查外部的根源)。这是正常的(通常意义上的)工作副本,它满足WCes的所有标准条件和要求(所有需要的操作只为WCes回复 - 包装和嵌套),是的:如果存储库未打开,则必须提供从客户端所有必需的凭据,每个客户的唯一用户显然有点过分:从功能方面来说,它足以拥有2个用户 - “读者”和“完全访问”(对于提交者,以便在此过程中不会动态更改凭据)