1

我正在考虑从 mercurial 迁移到 SVN,因为它似乎更易于维护,并且与可用的 mercurial 客户端相比,拥有 SVN 客户端的人更多。但是我有一个关于文件结构的问题 -

我了解典型的正确 SVN 结构是:

/trunk
..../当前版本文件在这里

/branch
..../bugfix
..../newfeature
..../branch3
..../branchN

/tag
..../version 1.0
..../version 2.0
..../version nn

我的问题是这个因素如何影响多个操作系统?我的软件目前为每个操作系统的我的软件的 GUI/CLI 版本都有单独的 mercurial 存储库,因为您不能只签出 mercurial 中的目录。但是,我知道你可以在 SVN 中。结构看起来像:

/Windows(或 Linux,或其他)

/trunk
..../CLI
...../此处为当前版本文件
..../GUI
...../此处为当前版本文件

/branch
..../CLI
...../bugfix
...../newfeature
...../branch3
...../branchN
..../GUI
...../bugfix
。 ...../newfeature
...../branch3
...../branchN

/tag
..../CLI
...../version 1.0
...../version 2.0
...../version nn
..../GUI
...../version 1.0
.... ./version 2.0
...../version nn

还是我让这太复杂了?您是否建议将 GUI 版本存储在单独的存储库中?另外,在这些典型目录中的哪些目录中存储了预编译的可执行文件?

我知道这些问题可能看起来很新手,但事实是我对 SVN 完全陌生。感谢您的帮助!

4

1 回答 1

1

我已经使用 SVN 大约 3 或 4 年了,你所拥有的对我来说看起来很不错,我不会将 GUI 版本存储在单独的 repo 中。在我的工作中,我们将所有项目都放在一个 repo 下,只是不同的文件夹,这很有效,因为正如您所说,您可以查看您想要的任何文件夹。

还有一些人认为您不应该将二进制数据(例如预编译的可执行文件)存储在 SVN 存储库中,因为它会使存储库膨胀,因为它无法与以前的版本(例如 text can)进行区分。这或多或少是我工作中的不成文政策。在我的个人 SVN 上,我将检查我知道不会定期更改的重要可执行文件或库文件,以便在我需要它们时它们在那里。我不担心臃肿,并且能够通过其他版本的 exe 后退到查看进度有时会很酷。

就分支和标签而言,我从未使用过它们。我知道我可能应该这样做,但无论如何我的大多数项目都是“概念证明”,所以我的主干实际上是我构建的全部。我基本上使用 SVN 作为一个非常好的备份和时间线工具。但我应该开始使用标签和分支。

于 2011-05-23T04:13:55.607 回答