在TFS中有选择地分支

时间:2010-01-08 18:36:56

标签: tfs

我们允许外部顾问处理我们部分资源。我们创建了一个新的TFS项目并授予他们权利。分支在TFS项目之间起作用,因此我们可以将他们正在进行的“真正的”TFS项目分支到顾问项目。但是,我们只想暴露它的一部分。这是我们想要的(简化):

OurProject
  Mainline
    Applications
      Secret1
      NewApp
    Libraries
      Secret2
      Shared

ConsultantProject
  Mainline-Branch
    Applications
      NewApp
    Libraries
      Shared

如果我们只是分支Mainline并删除分支上的Secret文件夹,则必须小心合并以避免删除Mainline Secret文件夹。我们希望在最小化风险的同时简化未来的合并(两种方式)。

如何实现这一目标?

4 个答案:

答案 0 :(得分:2)

我知道这可能不会回答你的问题,而是你问题的意图。为什么不设置权限来隐藏顾问和分支中的秘密项目,就像其他任何时候一样?

答案 1 :(得分:1)

不是分支然后从分支中删除文件/文件夹,而是仅分支您希望他们有权访问的文件。

例如:

  • 分支主线 - > $ / ConsultantProject /干线分支。
  • 右键单击$ / ConsultantProject / Mainline-Branch / Applications / Secret1并撤消结帐。
  • 同样在$ / ConsultantProject / Mainline-Branch / Libraries / Secret2上撤消checkout。
  • 检查您的分行($ / ConsultantProject /)。

完成此操作后,从一个到另一个的合并不会影响您未分支的文件/文件夹。

答案 2 :(得分:1)

我同意Alex的观点。 TFS没有任何内置机制来处理稀疏分支。 TFS中最接近的模拟是按标签分支/合并,但该策略带来了大量的管理开销,非常容易出错。

所以,只需让分支/合并系统做它的事情并使用ACL来确保你的顾问看不到秘密酱。

请注意,为了完全的安全性,您需要为它们创建一个不包含任何Secret项目的第二个解决方案,然后将ACL作为主要(全包)解决方案。任何非秘密项目是否依赖于秘密项目?如果是这样,你将不得不做类似的事情(虽然稍微涉及一些)。

答案 3 :(得分:0)

TFS非常喜欢项目的所有依赖项都在一个文件夹中。我会重新调整你的文件夹布局。我就是这样做的。

TeamProject
    SecretApplication
        SharedLibrary1
    Application1
        SharedLibrary1
    SharedLibrary1
    ConsultantApplication1
        SharedLibrary1

这是详细信息......

请注意所有应用是如何同行的? SharedLibraries共享/分支到使用它们的应用程序中。这样,应用程序可以按照自己的进度前进,按照自己的进度降低共享更改,并按照自己的进度将其更改合并到共享代码中。 TeamProject-> SharedLibrary1是SharedLibrary1的“主线”。在其他地方你看到SharedLibrary1,它是一个分支。每个应用程序文件夹都是自己的“主线”,使您的结构比以“我们所有工作”为中心更加以应用为中心。

使用此设置,您只需创建Application1的分支并将其命名为ConsultantApplication1。这样,您可以设置安全性,以允许您的顾问只看到一个应用程序及其所有依赖项。他们可以随意合并和拉动。好吧,如果没有看到源项目,他们将无法合并,但你可以。您团队项目中的所有其他应用都将对他们不可见。

如果我误解了某些内容或有一些要求阻止您使用此类结构,请告诉我。如果在Application1下有一个秘密共享库,我们将不得不考虑更多,但我认为无论如何都会有编译问题。无论如何,将应用程序的所有依赖项放在一个文件夹下有助于实现这一目标,这是一种很好的做法。