我们可以在没有任何网络访问权限的情况下在本地计算机上设置svn服务器吗?


25

我想在没有任何网络访问权限的情况下在计算机上设置SVN存储库。我正在编写没有任何协作者的代码,所以我不希望它公开。

我读了这篇文章,但是它建议使用提供免费存储库的在线SVN存储库服务。在这种情况下,我的代码将公开可用(包括在免费计划的条款中)。

因此,我想知道是否可以在Windows XP计算机上设置本地服务器,即使我没有任何互联网连接也只能访问该本地服务器?


15
我强烈建议您针对您描述的工作流程在诸如svn之类的地方使用git
Daenyth 2012年

7
您当然可以在本地安装svn并使用它。没问题。 visualsvn.com/server/download
Alex

8
或水星;“ hg init”会在您所在的目录中创建一个存储库...难道没有比这容易得多吗?
表演

8
我在问题中没有发现建议DVCS是必要的。Subversion非常适合描述的场景。在没有技术理由的情况下,不要让我们对替代方案的建议模糊不清。
RichardM 2012年

3
@RichardM:如果更容易设置且更适合未来,则建议其他解决方案没有错。如果OP希望有一天与他人合作,则DVCS可以提供​​许多其他好处。
marco-fiset 2012年

Answers:


31

设置本地服务器的最简单方法是使用svnserve

Subversion包括Svnserve-轻型独立服务器,它通过普通的TCP / IP连接使用自定义协议。对于较小的安装或无法使用完整的Apache服务器的情况,它是理想的选择。

但是,如果您只想在本地访问存储库,则实际上并不需要 Subversion服务器,因为您可以通过文件URL访问Subversion存储库,如以下答案所示

您可以使用file://协议访问存储库,因此只需要安装Tortoise SVN即可。在常见问题解答中看到此问题:是否可以在没有服务器的情况下使用TortoiseSVN?

您甚至可以将存储库放在USB设备中,以便随身携带源代码并从其他计算机上进行操作。

如果您使用的是TortoiseSVN,则可以在使用TortoiseSVN创建存储库中找到说明:

  1. 打开Windows资源管理器

  2. 创建一个新文件夹并命名为SVNRepository

  3. 右键单击新创建的文件夹,然后选择TortoiseSVN→在此处创建存储库...。

在此页面的紧上方,还描述了如何从命令行创建存储库


话虽如此,我建议您看看MercurialGit作为替代方案svn。如果您熟悉TortoiseSvn,那么您会发现TortoiseHgTortoiseGit是一个简单的过渡,此外,如果需要,它还为您提供了以分布式方式工作的灵活性。例如,在过去,我曾使用记忆棒hg在没有网络访问权限的机器之间转移存储库,而当您以这种方式工作时,您可以获得一份免费的备份。


真是个好答案!
史蒂夫

9

最简单(也是最快)的服务器,您可以将其用于本地存储库,并嵌入到每个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服务器的“老大哥”都没有任何区别

用于file:/// repo的RepoBrower


1
@Lazy Badger OP明确询问如何设置svn服务器。您告诉他根本不要使用任何服务器。如上所述,这避免了回答问题。
替代方式

5
@mathepic-实际上,OP询问如何设置SVN 存储库而不是服务器-差异很大。
Murph 2012年

5

让我们尝试一个建议通用解决方案而不是具体解决方案的答案。

首先,可以在独立的计算机上使用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/


2

Subversion不需要服务器。它使用集中式存储库,但是可以通过“文件”访问方法访问该存储库,这意味着您只需要访问存储该存储库的文件系统。进行此设置的最简单方法是在硬盘上的某个位置创建一个文件夹,将TortoiseSVN(或类似工具)指向该文件夹,然后在此处“创建存储库”。从那里,您可以执行将代码放入存储库所需的任何操作。

但是,从长远来看,使用分布式SCM可能会更好,最好的候选者是git(功能更强大,学习曲线更陡峭,在* nix上效果最佳)和Mercurial(功能稍弱,易学且功能相同)以及在Windows和* nix上)。有了这些,您的工作副本将包含整个存储库,并且您可以根据需要创建任意数量的克隆(远程或本地)。您可以从本地开始,如果决定在外部托管存储库,则只需将现有的本地存储库克隆到外部位置,就可以随时在两个方向上进行同步。更好的是,由于每个克隆都包含整个项目历史记录,因此SCM可以兼作备份系统。使用subversion时,如果您的服务器死了而又没有备份它,那么您的历史记录就消失了-使用git,

http://hginit.com/提供了有关Mercural入门的出色教程。


1

相当多的SVN托管公司为一个或两个开发人员提供免费帐户,并且不需要公开您的代码。检查链接表是否有$ 0费用,是否需要OSS =否。我数了九个现在满足这些条件的提供商。

您当然可以非常轻松地托管自己的存储库,但使用提供程序有一些好处:

  • 您可以从任何地方访问代码,而无需进行额外的设置。

  • 将代码置于非现场状态可保护您免受硬盘崩溃,火灾等的影响。

  • 低管理费用。


我在OP方面看到了合理的概念 -他想要SVN,并希望在本地使用(最后一句话-最重要)。休闲用例。您针对不同的用例回答了问题,可以将其视为“不是答案”-请从头开始重新阅读您的文字!我没有将您和其他人的答案标记为“不是答案”,而正式地他们不是答案。HTH
Lazy Badger

重新阅读OP的最后一句话:“是否可以在即使没有任何Internet连接的情况下也只能访问的Windows XP计算机上设置本地服务器?” - 这是问题,以纯英文文本显示。这个问题需要答案。请问您的“答案”关联以任何方式与问题?说实话,至少到自己,认识到错误
懒獾

我不字里行间(并表明此不止一次),我读什么写和问问题的答案,没有作者的思想,他说,但没有说。与该主题中的大多数答案相反,那里的答案与问题无关
Lazy Badger 2012年
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.