我想在没有任何网络访问权限的情况下在计算机上设置SVN存储库。我正在编写没有任何协作者的代码,所以我不希望它公开。
我读了这篇文章,但是它建议使用提供免费存储库的在线SVN存储库服务。在这种情况下,我的代码将公开可用(包括在免费计划的条款中)。
因此,我想知道是否可以在Windows XP计算机上设置本地服务器,即使我没有任何互联网连接也只能访问该本地服务器?
我想在没有任何网络访问权限的情况下在计算机上设置SVN存储库。我正在编写没有任何协作者的代码,所以我不希望它公开。
我读了这篇文章,但是它建议使用提供免费存储库的在线SVN存储库服务。在这种情况下,我的代码将公开可用(包括在免费计划的条款中)。
因此,我想知道是否可以在Windows XP计算机上设置本地服务器,即使我没有任何互联网连接也只能访问该本地服务器?
Answers:
设置本地服务器的最简单方法是使用svnserve:
Subversion包括Svnserve-轻型独立服务器,它通过普通的TCP / IP连接使用自定义协议。对于较小的安装或无法使用完整的Apache服务器的情况,它是理想的选择。
但是,如果您只想在本地访问存储库,则实际上并不需要 Subversion服务器,因为您可以通过文件URL访问Subversion存储库,如以下答案所示:
您可以使用file://协议访问存储库,因此只需要安装Tortoise SVN即可。在常见问题解答中看到此问题:是否可以在没有服务器的情况下使用TortoiseSVN?
您甚至可以将存储库放在USB设备中,以便随身携带源代码并从其他计算机上进行操作。
如果您使用的是TortoiseSVN,则可以在使用TortoiseSVN创建存储库中找到说明:
打开Windows资源管理器
创建一个新文件夹并命名为SVNRepository
右键单击新创建的文件夹,然后选择TortoiseSVN→在此处创建存储库...。
在此页面的紧上方,还描述了如何从命令行创建存储库。
话虽如此,我建议您看看Mercurial或Git作为替代方案svn
。如果您熟悉TortoiseSvn,那么您会发现TortoiseHg和TortoiseGit是一个简单的过渡,此外,如果需要,它还为您提供了以分布式方式工作的灵活性。例如,在过去,我曾使用记忆棒hg
在没有网络访问权限的机器之间转移存储库,而当您以这种方式工作时,您可以获得一份免费的备份。
最简单(也是最快)的服务器,您可以将其用于本地存储库,并嵌入到每个svn-client中。这是用于使用协议file:/// 访问本地文件系统上存在的任何存储库和任何数量的存储库的服务器。它不提供任何授权或身份验证方法,仅授予在控制之下的存储库完全不受限制的访问权限,但是从另一方面讲,它允许使用VCS系统并提供其所有功能。
为了使用该服务器,您可以在任何位置的任何空目录中使用相应的子命令和参数调用CLI命令svnadmin(我不记得了,CLI客户端捆绑包中是否有管理程序,并且不能检查它-我还没有安装CLI svn-client,只有TortoiseSVN,它在1.7版的安装程序中有这些程序)-我希望您能够找到它。
svnadmin help
向我们展示所有可用的子命令,我们现在对subcommand感兴趣create
。
svnadmin help create
提供我们所需的所有详细信息
create: usage: svnadmin create REPOS_PATH
Create a new, empty repository at REPOS_PATH.
Valid options:
...
在第一个回购的起点,我们可以忽略所有微调选项,只记住主表单svnadmin create REPOS_PATH
,REPOS_PATH是计划用于回购的空目录的绝对路径或相对路径。因为大多数时间用于跨平台应用程序的普通Windows用户可能会感到困惑,所以在路径(元距)中使用哪种表示法(正斜杠或反斜杠),所以最安全的方法是cd
定位,从中可以看到我们的目录,而无需冗长的路径-将来的回购目录或目录本身的父目录。对于计划回购z:\Main
之前 svnadmin create
Z:
cd \Main
最后
svnadmin create .
结果,我们在目录中创建了空存储库,该存储库在Windows资源管理器中显示,带有特殊图标作为内容指示符
现在,每当需要此存储库时,我们都使用常规的SVN命令,URL部分或参数看起来像file:///Z:/Main
c:\>svn ls file:///Z:/Main
branches/
tags/
trunk/
(我在回购中添加了标准存储库树)。
让我们剖析这个奇怪的URL:
file:///
,对于任何URL而言,表示访问协议,在我们的情况下协议是特殊的,并且具有三个而不是两个斜杠Z:/Main
是具有驱动器和驱动器内部路径的存储库的完整路径,所有Windows反斜杠都替换为“经典”正斜杠从任何其他角度来看,此存储库与具有特殊Subversion服务器的“老大哥”都没有任何区别
让我们尝试一个建议通用解决方案而不是具体解决方案的答案。
首先,可以在独立的计算机上使用Subversion-您可以在本地安装服务器,也可以使用file://
但是除非有很好的理由必须使用Subversion,否则我建议这不是解决本地版本控制问题的最佳方法-尤其是因为它失败了我认为必不可少的事情之一,即确保您源代码至少在两个地方(是的,甚至是个人物品)。因此,我建议使用分布式版本控制系统(DVCS)。
DVCS的好处之一是,一旦安装了这些工具,存储库就会自包含在一个文件夹中,并且只要您具有文件级访问权限,就可以在包含“相同”存储库的不同文件夹之间同步内容。您还可以选择与这些存储库的“服务器”版本进行对话(这些版本是私人托管的或可以作为服务使用)。这使生活在本地运行变得容易得多。
DVCS还有其他优点。
正如我已经指出的那样,我不认为您真正有一个合适的VCS解决方案,因为您的代码至少在两台计算机上(特别是两个不同的硬盘,理想情况下在一个以上的位置),尽管克隆并推动说USB记忆棒或“云”存储(skydrive,dropbox等)也是应该起作用的另一种方式。
关于哪种DVCS,我将研究Mercurial(Hg)和Git,以及Veracity。我使用Mercurial是因为它在Windows上仍然更好...
如果您使用托管服务的条款,我确实同意,值得赞扬github的很多-但是关于bitbucket和Fogbugz / Kiln还有很多美好的事情……许多其他服务也可能如此。我还没有列出(例如今天早些时候在Twitter上传递给我的提到的http://beanstalkapp.com/)
Subversion不需要服务器。它使用集中式存储库,但是可以通过“文件”访问方法访问该存储库,这意味着您只需要访问存储该存储库的文件系统。进行此设置的最简单方法是在硬盘上的某个位置创建一个文件夹,将TortoiseSVN(或类似工具)指向该文件夹,然后在此处“创建存储库”。从那里,您可以执行将代码放入存储库所需的任何操作。
但是,从长远来看,使用分布式SCM可能会更好,最好的候选者是git(功能更强大,学习曲线更陡峭,在* nix上效果最佳)和Mercurial(功能稍弱,易学且功能相同)以及在Windows和* nix上)。有了这些,您的工作副本将包含整个存储库,并且您可以根据需要创建任意数量的克隆(远程或本地)。您可以从本地开始,如果决定在外部托管存储库,则只需将现有的本地存储库克隆到外部位置,就可以随时在两个方向上进行同步。更好的是,由于每个克隆都包含整个项目历史记录,因此SCM可以兼作备份系统。使用subversion时,如果您的服务器死了而又没有备份它,那么您的历史记录就消失了-使用git,
http://hginit.com/提供了有关Mercural入门的出色教程。
有相当多的SVN托管公司为一个或两个开发人员提供免费帐户,并且不需要公开您的代码。检查链接表是否有$ 0费用,是否需要OSS =否。我数了九个现在满足这些条件的提供商。
您当然可以非常轻松地托管自己的存储库,但使用提供程序有一些好处:
您可以从任何地方访问代码,而无需进行额外的设置。
将代码置于非现场状态可保护您免受硬盘崩溃,火灾等的影响。
低管理费用。