0

作为一名经验丰富的 SVN 用户和 TFS 初学者,我对 Shelving/Unshelving 过程有一些疑问。希望一些有经验的用户可以帮助我一点。我的目的是了解搁置/取消搁置文件内容和版本规范的工作原理。为此,我将介绍一些具体情况。

我将我的(远程)工作区映射更新到 versionspec(== svn 修订版)X,我做了一些本地更改,然后搁置它们。

  • 我可以将它们搁置在不同的空工作区映射中(在执行任何“获取”之前)吗?
  • 我可以将它们搁置在指向 versionspec X-2 的不同工作区映射中(这些与 versionspecs 之间的代码没有相关更改)吗?
  • 我可以在指向 versionspec X+2 的不同工作区映射中将它们搁置(这些与 versionspecs 之间的代码没有相关更改)?
  • 我可以将它们搁置在不同的工作区映射中,该映射指向在受影响的文件/行中具有“相关更改”的不同版本规范吗?
  • 我可以在不同的工作区映射中将它们搁置,指向版本规范 X+2,在 X+2 处没有“相关更改”,但在 X+1 处发生了相关更改(想象一下,在 X+1 处删除了一条线,但再次出现在 X+2) ?

在这些情况下,预期的行为是什么。我会得到任何错误/冲突吗?如果我使用本地工作空间而不是服务器工作空间,我会遇到什么不同吗?

4

2 回答 2

0

这里有一些术语问题。工作区映射只是一个本地路径列表以及您要下载到它们的服务器路径。在您执行获取之前,工作空间映射不是“空的”;当且仅当您没有从服务器路径到本地路径的任何映射时,工作空间映射才会为空。

  1. 是的。如果您设置了一个新工作区但没有执行 get,您可以取消搁置一个搁置集。这将导致您只有文件被搁置,而没有其他文件。

  2. 是的。如果您Foo.cs在版本 8 中有一些文件,并且您取消Foo.cs了在版本 6 中更改的文件,那么现在您Foo.cs在版本 6 中拥有已搁置的更改。其他不在搁置集中的文件将保留在它们所在的任何版本,搁置和取消搁置不会影响它们。

  3. 见#2。

  4. 一般来说,没有。您可以使用TFS 电动工具执行“取消搁置/合并”。

  5. 是的。同样,这只会将您的文件恢复到搁置的版本。如果服务器上有更改,那么您需要执行 Get Latest 以将本地(未搁置)更改与服务器上的更改合并。如果您从一开始就没有搁置,这会模仿工作流程。

于 2014-07-25T14:16:01.770 回答
0

不,您不能在任何这种情况下取​​消搁置!想象一下,搁置是一种保存工作的方法,当您周五晚上 18:00 在公司起床并放在抽屉里时……然后在周一回到桌子上!因为任何项目都被搁置,将地址保留在源代码管理中。如果您想移动到另一个地址,您将取消搁置,稍后再移动该项目。

于 2014-07-25T13:37:18.347 回答