无论您使用哪种协议访问您的仓库,您都需要至少创建一个仓库。这可以通过 Subversion 命令行客户端或 TortoiseSVN 完成。
如果您还没有创建 Subversion 仓库,现在就该创建了。
创建一个名为 SVN 的空文件夹(例如 D:\SVN\
),用作所有仓库的根目录。
在 D:\SVN\
中创建一个名为 MyNewRepository
的文件夹。
打开命令提示符(或 DOS-Box),进入 D:\SVN\
并输入
svnadmin create --fs-type fsfs MyNewRepository
现在您就拥有了一个位于 D:\SVN\MyNewRepository
的新仓库。
打开 Windows 资源管理器
创建一个新文件夹,并将其命名为 SVNRepository
右键单击 新创建的文件夹,然后选择 → .
然后将在新文件夹中创建一个仓库。 不要自己编辑这些文件!。如果您遇到任何错误,请确保文件夹为空且没有写保护。
您还会被询问是否要在仓库中创建目录结构。有关布局选项的信息,请参阅 名为“仓库布局”的部分.
TortoiseSVN 在创建仓库时会设置一个自定义文件夹图标,以便您更容易识别本地仓库。如果您使用官方命令行客户端创建仓库,则不会分配此文件夹图标。
我们还建议您除了本地测试目的外,不要使用 file://
访问。使用服务器对于除单人开发之外的所有情况都更安全、更可靠。
要访问您的本地仓库,您需要该文件夹的路径。请记住,Subversion 期望所有仓库路径都采用 file:///C:/SVNRepository/
的形式。请注意,整个路径使用正斜杠。
要访问位于网络共享上的仓库,您可以使用驱动器映射,也可以使用 UNC 路径。对于 UNC 路径,形式为 file://ServerName/path/to/repos/
。请注意,这里只有 2 个前导斜杠。
在 SVN 1.2 之前,UNC 路径必须使用更模糊的形式 file:///\ServerName/path/to/repos
。这种形式仍然支持,但不推荐。
虽然理论上可以将 FSFS 存储库放在网络共享上,并让多个用户使用 file://
协议访问它,但这绝对不推荐。事实上,我们强烈建议不要这样做,并且由于各种原因不支持这种使用方式。
首先,您将为每个用户提供对存储库的直接写入权限,因此任何用户都可能意外删除整个存储库或以其他方式使其无法使用。
其次,并非所有网络文件共享协议都支持 Subversion 所需的锁定,因此您可能会发现您的存储库已损坏。它可能不会立即发生,但有一天两个用户会尝试同时访问存储库。
第三,文件权限必须设置得恰到好处。您可能在本地 Windows 共享上勉强可以做到,但 SAMBA 尤其困难。
如果一个人安装了更新版本的客户端,该客户端升级了存储库格式,那么其他所有人都将无法访问存储库,直到他们也升级到新客户端版本。
file://
访问仅适用于本地单用户访问,特别是测试和调试。当您想共享存储库时,您确实需要设置一个合适的服务器,这并不像您想象的那么困难。阅读名为“访问存储库”的部分,了解有关选择和设置服务器的指南。
在将数据导入存储库之前,您应该首先考虑如何组织数据。如果您使用其中一种推荐的布局,您以后会更容易。
有一些标准的、推荐的仓库组织方式。大多数人会创建一个名为 trunk
的目录来存放开发的 “主线”,一个名为 branches
的目录来存放分支副本,以及一个名为 tags
的目录来存放标签副本。如果仓库只包含一个项目,那么人们通常会创建这些顶级目录。
/trunk /branches /tags
由于这种布局非常普遍,当你使用 TortoiseSVN 创建新仓库时,它也会提供为你创建目录结构的选项。
如果仓库包含多个项目,人们通常会按分支索引其布局
/trunk/paint /trunk/calc /branches/paint /branches/calc /tags/paint /tags/calc
...或者按项目索引
/paint/trunk /paint/branches /paint/tags /calc/trunk /calc/branches /calc/tags
如果项目之间没有紧密联系,并且每个项目都是独立检出的,那么按项目索引是有意义的。对于相关项目,你可能希望一次性检出所有项目,或者项目都捆绑在一个单独的发布包中,那么按分支索引通常更好。这样你只需要检出一个 trunk,并且子项目之间的关系更容易看到。
如果你采用顶级 /trunk /tags /branches
的方法,你并不一定要为每个分支和标签复制整个 trunk,从某种程度上来说,这种结构提供了最大的灵活性。
对于不相关的项目,你可能更倾向于使用单独的仓库。当你提交更改时,是整个仓库的版本号发生变化,而不是项目的版本号。让两个不相关的项目共享一个仓库会导致版本号之间出现很大的差距。Subversion 和 TortoiseSVN 项目出现在同一个主机地址,但它们是完全独立的仓库,允许独立开发,并且不会对构建号造成混淆。
当然,你可以自由地忽略这些常见的布局。你可以创建任何类型的变体,无论对你或你的团队最有效。请记住,无论你选择什么,它都不是永久性的承诺。你可以在任何时候重新组织你的仓库。因为分支和标签是普通的目录,TortoiseSVN 可以根据你的意愿移动或重命名它们。
从一种布局切换到另一种布局仅仅是发出一系列服务器端移动操作的问题;如果你不喜欢仓库中事物组织的方式,只需将目录四处移动即可。
因此,如果你还没有在你的仓库中创建基本的文件夹结构,你应该现在就创建。有两种方法可以实现这一点。如果你只是想创建一个 /trunk /tags /branches
结构,你可以使用仓库浏览器创建这三个文件夹(在三个独立的提交中)。如果你想创建一个更深的层次结构,那么首先在磁盘上创建文件夹结构并将其导入到一个提交中会更简单,就像这样
在你的硬盘驱动器上创建一个新的空文件夹
在该文件夹中创建你想要的顶级文件夹结构 - 现在不要放入任何文件!
通过 右键单击 包含此文件夹结构的文件夹并选择 → 将此结构导入到仓库中。在导入对话框中输入你的仓库的 URL 并单击确定。这将把你的临时文件夹导入到仓库根目录,以创建基本的仓库布局。
请注意,你导入的文件夹的名称不会出现在仓库中,只有它的内容。例如,创建以下文件夹结构
C:\Temp\New\trunk C:\Temp\New\branches C:\Temp\New\tags
将 C:\Temp\New
导入到仓库根目录,它将看起来像这样
/trunk /branches /tags