65.9K
CodeProject 正在变化。 阅读更多。
Home

Subversion 和 TortoiseSVN:在 Windows 2003 服务器和本地计算机上安装和启动

starIconstarIconstarIconstarIcon
emptyStarIcon
starIcon

4.53/5 (37投票s)

2007 年 3 月 22 日

CPOL

17分钟阅读

viewsIcon

244963

本文介绍如何在 Windows 计算机上安装和实现 Subversion 版本控制软件和 TortoiseSVN 客户端界面工具。

引言

在本文中,我将引导您完成安装 Subversion 并开始使用这个非常有用的版本控制工具的过程。我选择 Subversion 是因为它易于使用和理解,提供的文档非常容易理解和导航,而且成本也无法抗拒——免费。

我将本文按照分步方法进行阐述,使用我认为最适合我的情况的实践,总有方法可以自定义此过程,我将在步骤进行过程中提及其中一些。

注释

为澄清一些术语 -

  • 当我提到“Explorer”或“explorer”时,我指的是 Windows 文件管理器。
  • Subversion 将简称为 SVN
  • TortoiseSVN 将简称为 TSVN

    本文中的一些图片已调整大小。

    我写这篇文章时考虑了初学者,其中一些步骤和图像可能看起来冗余且不必要,但我将其包含在内,以便尽可能减少混淆。

    本文中使用的名称和别名可以,也应该,根据您的需求进行更改。

    *有一个一键安装过程,可以安装 SVN、TSVN、设置服务、下载文档并创建第一个存储库 - http://svn1clicksetup.tigris.org/ 我没有走这条路,因为我想对我在我的机器上安装的东西有更多的控制和理解。

    快速参考链接

    开始正文

    I. 我推荐做的第一件事是获取一份最新的 Subversion 手册。当您想更深入地了解细节时,这将是很好的参考。 http:\\svnbook.red-bean.com\,我推荐 .pdf 版本,因为这样您可以将副本保存到您的桌面上,您还可以下载同一文档的单页 HTML 版本。

    II. 在本地桌面上获得手册副本后,就可以开始安装了。通过 RDC(远程桌面连接)到服务器,或直接登录服务器并导航到 SVN 下载页面 http:\\subversion.tigris.org\servlets\ProjectDocumentList?folderID=91

    a. 从此网站选择最新版本的 SVN .exe 安装程序(本文发布时为 svn-1.4.2-setup.exe)

    III. 在服务器上运行 .exe 文件

    a. 按照提示在服务器上安装 SVN

    b. 接受许可协议

    c. 选择 SVN 在服务器上的安装位置

    d. 接受“Subversion”开始菜单快捷方式

    e. 允许将文档链接发布到服务器

    *注意 - 在撰写本文时,发布的文档来自 SVN 版本 1.3,但除最新添加内容外,大部分数据仍是当前的。文档仍然可以作为参考。

    f. 点击“Install” -> “Next” -> “Finish”,您就已在服务器上安装了 SVN。简单吧?

    IV. 安装过程的下一步将设置 SVN 的日志编辑器

    a. 点击“开始” -> 选择“控制面板” -> “系统”

    b. 选择“高级”选项卡 -> “环境变量”

    c. 在“系统变量”下点击“新建”

    d. 将变量名设置为 SVN_EDITOR

    e. 将变量值设置为 C:\Windows\notepad.exe

    i. 这是 SVN 中日志的默认文本编辑器

    f. 点击“确定”退出菜单

    V. 将 SVN 设置为服务器上的服务

    a. 首先下载包含所需文件的 .zip 文件 – http:\\www.stanford.edu\~bsuter\subversion-setup-guide\SVNService.zip

    b. 打开 zip 文件并选择 SVNService.exe 文件

    i. 点击“编辑” -> “移动到文件夹” -> 浏览到 C:\Program Files\Subversion\bin


    **将此文件放在此处至关重要,因为它需要 svnserve.exe 才能正常运行。服务运行不需要其他文件,但您可以将它们解压到 bin 文件夹中以供参考。

    c. 打开命令窗口

    d. 输入 'svnservice –install –daemon - - root "d:\AppRepositories

    i. 这会将服务设置为在后台运行(守护进程),并将根目录设置为保存存储库的文件(d:\AppRepositories)。

    e. SVN 现在已设置为服务

    f. 现在 SVN 已在服务器上设置为服务,您可以通过命令行,然后通过 TSVN 界面以以下格式访问它 - svn://(ServerName)/(RepositoryName)/ProjectSource/trunk

    **注意,实际驱动器(D:/)和保存存储库的文件夹(AppRepositories)已从命令中省略,这是因为现在使用了服务创建命令中指定的“root”。

    g. 现在进一步配置服务,转到“开始” -> “控制面板” -> “管理工具” -> “服务”

    h. 向下滚动到 SVNService 并双击该服务。将“启动类型”从“手动”更改为“自动”


    i. 现在 SVN 将在服务器启动时每次启动。

    j. 返回服务屏幕,点击右窗格左上角的“启动”按钮,或者点击工具栏中的“播放”图标来启动服务

    k. 关闭窗口,您已成功将 SVN 作为服务实现。

    VI. 卸载 SVN 服务

    a. 打开命令窗口

    b. 输入 'svnservice –remove'

    c.此命令将停止并从目录中删除服务

    VII. 使用 SVN 命令行创建存储库

    a.首先,打开一个命令提示符窗口

    b.接下来,在 D: 驱动器上创建一个文件夹来存放所有存储库

    i. 'mkdir d:\AppRepositories'

    c.在此文件夹内放置所有项目存储库。
    **可以在同一个存储库中放置多个项目,但我不会推荐这样做,因为有可能无意中混合或替换掉某些代码。如果将要分组的存储库风格相似或使用相同的资源,这样做可能会有益。

    d. 还在 AppRepositories 目录中创建一个名为 'config' 的文件夹。此文件夹将保存所有后续存储库的共享 passwd 文件。**此步骤不是必需的,但可以大大简化管理。

    i. 'mkdir d:\AppRepositories\config'

    ii. **我们将在几步之后,在设置存储库配置时,将 passwd 文件放入此新文件夹中。

    e. 现在创建第一个存储库,我建议使用与项目相同的名称作为存储库名称。

    i. 'svnadmin create d:\AppRepositories\((ProjectName))'

    f. 存储库创建完成后,我们需要在存储库本身内创建另一个文件夹来保存项目的工件目录。我添加了后续文件夹是为了我自己的方便,因为我认为这种方法更容易理解。

    i. 'svn mkdir file:\\\d:\AppRepositories\((ProjectName))\ProjectSource'

    ii. 这个子文件夹需要用来存放 trunk、branches 和 tags 文件夹,这些文件夹实际上包含工作代码。主存储库(((ProjectName)))仍然负责项目的版本控制。此文件夹和下一步骤中创建的文件夹需要为所有存储库创建。

    iii. trunk 文件夹是您存储源代码或工作代码的地方。tags 文件夹用于存放项目的“快照”,例如版本 1.0.22。branches 文件夹用于存放项目的分支,基本上是相同的代码,但具有不同的功能,例如将应用程序引向新的方向。

    g. 在创建“ProjectSource”文件夹后,记事本中将出现一个日志文件

    **在“- -”封闭行上方的第一行输入操作的描述,例如“Initial creation of the projectsource folder to hold trunk, branches, and tags source folders。”(初始创建 projectsource 文件夹以存放 trunk、branches 和 tags 源代码文件夹)。

    h. 点击“文件”->“保存”-> 关闭记事本

    i. 保存并关闭日志后,命令提示符将显示“Committed revision 1”。随后的每次更改都将成为存储库的一个修订版本。

    j. 现在创建 trunk、branches 和 tags 文件夹

    i. 'svn mkdir file:\\\d:\AppRepositories\((ProjectName))\ProjectSource\trunk'


    **在日志文件上方的“- -”封闭行输入操作的描述,例如“Initial creation of the trunk folder。”(初始创建 trunk 文件夹)。

    ii. 这是修订版本 2

    iii. 'svn mkdir file:\\\d:\AppRepositories\((ProjectName))\ProjectSource\branches'


    **在日志文件上方的“- -”封闭行输入操作的描述,例如“Initial creation of the branches folder。”(初始创建 branches 文件夹)。

    iv. 这是修订版本 3

    v. 'svn mkdir file:\\\d:\AppRepositories\((ProjectName))\ProjectSource\tags'


    **在日志文件上方的“- -”封闭行输入操作的描述,例如“Initial creation of the tags folder。”(初始创建 tags 文件夹)。

    vi. 这是修订版本 4

    k. 所有必要的文件夹都已创建并到位。下一步是配置对存储库的访问。**此步骤也可以在创建存储库后立即完成**

    l. 打开一个资源管理器窗口,浏览到 D:\AppRepository\((ProjectName))\conf

    **注意:您在资源管理器窗口中看不到刚添加的文件(ProjectSource、trunk、branches、tags),但请放心,它们存在但存储在存储库的相应修订版本中,仍然可供访问。

    m. 打开 conf 文件后,复制 passwd 文件并粘贴到我们之前创建的 AppRepositories 的 config 文件中。

    i. **此步骤不是必需的,每个存储库都可以有自己的用户列表及其密码。如果您选择使用此方法,请跳至步骤 r。


    n. 打开 svnserve.conf 文件。

    **如果提示选择用哪个应用程序打开此文档,请选择记事本。

    o. 在 [general] 部分,取消注释 auth-access、anon-access 和 password-db 行。

    i. 删除 '#' 符号,**确保在文本开头之前不留任何空格。**

    p. 设置 password-db = '..\..\config\passwd'。这将设置指向共享 passwd 文件的身份验证路径。

    q. 点击“文件”->“保存”-> 关闭窗口

    r. 现在,打开 config 文件夹中的 passwd 文件。**提示时,请选择记事本作为查看文件的应用程序。

    s. 在 [users] 部分删除示例用户

    t. 以 username = userpassword 的形式输入将拥有此存储库访问权限的用户。**同样,请确保在文本的第一个字符之前没有空格。

    i. 这是您除了添加新用户之外唯一需要修改 \config\passwd 文件的时间。除非您要修改每个存储库的 passwd 文件。

    u. 点击“文件”->“保存”-> 关闭窗口。

    VIII. 使用 TSVN 在服务器上创建存储库

    a. TSVN 在服务器级别不是必需的,因为它几乎是一个最终用户工具,但为了完整起见,我将其包含在此处。我个人认为使用 TSVN 创建存储库比使用命令行更容易。

    b. 首先转到 http:\\tortoisesvn.net\downloads

    c.将最新版本的 TSVN 下载到服务器(本文发布时为 1.4.3.8645)

    d.运行 32 位安装程序,如果您的服务器配置为 64 位,则运行 64 位。

    e.接受许可协议 -> 点击“下一步”

    f.接受 TSVN 的默认图标树和位置 -> 点击“下一步”

    g.点击“安装”

    h.安装完成后,取消选择“查看更改日志”并点击“完成”。

    i. TSVN 需要系统重启,关闭所有窗口,然后选择“是”立即重启

    i. 系统成功重启后,RDC 回到服务器或重新连接到系统并打开一个资源管理器窗口。

    j. 导航到 D:\ 驱动器,在窗口的右侧窗格中右键单击并创建一个新文件夹,用于存放所有存储库。将文件夹命名为“AppRepositories”。

    k. 打开文件夹并重复文件夹创建过程,这次将文件夹命名为与您要版本化的项目相同的名称。例如,“BrushLog”。另外创建一个名为“config”的文件夹,用于存放共享的 passwd 文件。

    l. 右键单击项目文件夹,向下滚动到 TortoiseSVN -> 并点击“在此处创建存储库”

    m.在第一个提示窗口中,选择“NativeFileSystem(FSFS)”

    i. **我强烈推荐使用此系统,因为它灵活且兼容性好

    n. 点击“确定”,存储库现在已创建。

    o. 接下来,通过打开存储库文件夹并在窗口的右侧窗格中右键单击来创建工件目录文件夹,创建一个将包含 trunk、branches 和 tags 文件夹的新文件夹。将文件夹命名为“ProjectSource”。

    p. 打开 ProjectSource 文件夹,并在右侧窗口中创建三个新文件夹,名称分别为:trunk、branches 和 tags。

    q. 打开 svnserve.conf 文件。**如果提示选择用哪个应用程序打开此文档,请选择记事本。

    r. 在 [general] 部分,取消注释 auth-access、anon-access 和 password-db 行。

    i. 删除 '#' 符号,**确保在文本开头之前不留任何空格。**

    s. 设置 password-db = '..\..\config\passwd'。这将设置指向通用 passwd 文件的身份验证路径。

    t. 点击“文件”->“保存”-> 关闭窗口

    u. 现在我们需要配置存储库的身份验证。打开您刚刚创建的存储库中的 conf 文件夹,并将 passwd 文件复制到 AppRepositories 目录下的 config 文件夹中。


    v. 打开 passwd 文件,提示时选择记事本作为打开文件的应用程序。

    w. 在 [users] 部分删除示例用户。**确保在文本和行开头之间没有空格。** 以 username = userpassword 的形式输入将拥有存储库访问权限的用户的姓名和密码。

    i. 这是您除了添加新用户外唯一需要更改此文件的时机。除非您选择了为所有存储库使用单独的 passwd 文件。

    x. 使用 TSVN 创建存储库的过程现已完成,请注意,使用此方法时,在添加文件时没有完成任何修订。此外,文件在资源管理器窗口中可见。

    IX. 在客户端计算机上安装 TSVN

    a. 首先转到 http:\\tortoisesvn.net\downloads

    b.将最新版本的 TSVN 下载到计算机(本文发布时为 1.4.3.8645)

    c.运行 32 位安装程序,或根据机器情况运行 64 位。

    d.接受许可协议 -> 点击“下一步”

    e.接受 TSVN 的默认图标树和位置 -> 点击“下一步”

    f.点击“安装”

    g.安装完成后,取消选择“查看更改日志”并点击“完成”

    i. TSVN 需要系统重启,关闭所有窗口,然后选择“是”立即重启

    X. 使用 TSVN 将源代码加载到存储库

    **注意:在继续之前,请确保您已完成第 IX 部分,必须已有一个存储库才能导入

    a.打开一个资源管理器窗口并浏览到包含源代码的文件夹

    b.右键单击文件夹 -> TortoiseSVN> -> “导入”

    i.在使用 TSVN 导入(到服务器)时,在这种情况下,它与导出(从客户端)相同。这开始让我困惑。

    c.在“存储库 URL”中输入“svn:\\(servername)\(NameOfRepository)\ProjectSource\trunk”。您可以在“导入消息”窗口中添加导入操作的描述,例如“Initial import of the (ApplicatioName) source code。”(应用程序名称的初始导入源代码)。

    d.在提示时,输入在存储库 conf 文件中的 passwd 文件中输入的用户名和密码。这只需要在每个会话中执行一次,SVN 和 TSVN 将在会话期间记住这些条目。除非您使用了单独的 passwd 文件,否则您必须为每个新存储库重复此操作。

    e.点击“确定”,所有文件都已加载到存储库,并在下一个修订版本号(TSVN 为修订版本 1,或 SVN 命令行创建存储库的方法不同,为修订版本 5)进行提交

    **注意:导入的总文件数也显示在窗口底部。

    XI. 从存储库创建本地工作目录

    a.打开一个 Windows 资源管理器并浏览到 C:\ 驱动器,右键单击右侧窗格并创建一个新文件夹。将文件夹命名为 SVN。

    b.打开 SVN 文件夹,在右侧窗格中右键单击并创建一个与您的存储库名称相同的文件夹

    c.右键单击新文件夹 -> SVN Checkout

    d.在“存储库 URL”中输入 'svn:\\(ServerName)\(RepositoryName)\ProjectSource\trunk'

    **注意:在窗口的底部区域,可以通过指定修订版本号来指定项目的先前修订版本。默认是最新提交的版本。

    e.点击“确定”

    f.这将以当前(最新)修订版本添加所有源代码。窗口显示添加到您目录的文件总数(Added: ##)和修订版本号。


    **注意:此文件夹中的每个文件上都有一个绿色的勾号图标,这意味着该文件来自存储库。如果文件被修改,此图标将变为红色的“!”,并且将保持不变,直到文件被提交回服务器上的存储库。

    g.现在您拥有了源代码的工作副本,可以随意修改、更改或重写,而无需担心“意外”丢失所有内容。

    XII. 将更改提交回存储库

    a.当您准备好将更改保存回存储库时,浏览到工件目录并右键单击文件夹 -> SVNCommit

    **注意,所有已更改的文件都标有红色的“!”,这只是 TSVN 通知您已完成一些工作的方式。

    b. TSVN 允许您选择要提交回存储库的文件,可以是单个控件、多个代码页或整个工作代码。

  • 您可以提交您选择的任何文件(不一定是全部),但当您提交所选文件时,它们将全部提交或都不提交(例如,当发生错误时)。*(SDragon42, 2007/3/23)*

    i.如果您正在作为一个团队参与项目,并且其他成员在您完成代码之前已经签出并签回了代码,而您的代码不兼容,TSVN 将显示一个错误。此时,我建议右键单击文件夹 -> TSVN -> 检查修改。有关 TSVN 功能的更多信息,请参阅手册。

  • **仅仅检查文件的更改不足以获得兼容的工作编译,需要在工作副本上进行更新才能从存储库中获取最新代码。*(SteveKing, 2007/3/23)*

    **注意:TSVN 的一个很酷的功能是,当您准备将更改提交回存储库时,所有将要发送的文件都会出现在提交窗口的下半部分,通过双击特定文件,您可以确切地看到修订版本之间发生了哪些更改。

    ii.点击“确定”

    iii.输入您在 passwd 文件中的用户名和密码

    iv.所有已更改的文件现在都已在存储库中更新并加载到下一个修订版本。窗口中显示了修订版本号。每个修订版本都包含每个项目的全部文件;区别在于显示在下方的内容。

    结论

    到目前为止,您已经掌握了使用 TSVN 进行 SVN 基本功能的方法。当然,SVN 还有很多其他功能可以实现,也许我会在以后的文章中介绍,但在此之前,您可以在下载的文档中找到所有信息。

    开始使用 SVN 是最难的部分,一旦您开始将其纳入开发周期,您就会意识到这些工具多么简单和有益。

  • 功劳归于功劳

    这篇文章如果没有一些更有经验和知识的人的帮助和指导,就不会是现在的样子。首先,我要感谢 **CP 社区**,它是一个支持和鼓励程序员的地方。其次,我要特别感谢两个人,他们不仅为本文的开篇提供了非常深刻的研究方向,而且还完成了导致本文产生的实际工作。

    • Hans Dietrich - 提供了非常好的文章和建议
    • code-frog - 指明了正确的方向

    历史

    初次提交文章 - 版本 1.0

  • 文本错误已更正 - 版本 1.1

  • 已解决严重的感谢缺失问题 - 版本 1.2

  • © . All rights reserved.