使用Subversion直接在存储库上工作

时间:2010-02-06 22:44:09

标签: svn version-control backup

我一直在与Subversion斗争一段时间,认为这是初学者会遇到的问题。虽然今天我一直在思考它,并意识到问题是它嵌入客户端文件的方式,并且你通过这些嵌入式文件在服务器db上工作。

所以我想知道:

  1. 直接向存储库工作可能同样容易,但命令是“更隐蔽”(在热门书籍中没有提到)?
  2. 是否可以在没有这些嵌入文件的情况下工作的任何GUI客户端。(16Feb:以难以或难以弄清楚的方式使用Subversion)
  3. Subversion中是否有任何亲戚在这方面“更好”?
  4. 在我使用VSS客户端GUI应用程序之前,它更容易 (虽然我确实想要更现代化的东西)。 举一个例子,我有一个Drupal安装,其中大多数文件是我需要跟踪的第三方文件。要开始,我需要检查所有内容然后再检查。 大多数更改都是Drupal项目的新版本。 (我知道有脚本可以处理第三方代码,但我仍然认为它必须很麻烦,特别是当这些代码分布在多个目录中时。)

    我过去经常做的另一件事是在几个VSS数据库中使用相同的源文件。 (16feb:Subversion中很难,因为嵌入的.svn目录引用了一个目录)

    ** 2月13日** 似乎有些人不太了解,所以: 主要问题是如果在不使用svn命令的情况下进行大量更改,尤其是当您替换3d方代码时替换目录,从那时起您将丢失.svn目录。

    如果您提前计划,可以使用svn_load_dirs.pl,如中所述 http://svnbook.red-bean.com/en/1.5/svn.advanced.vendorbr.html 虽然我想要的是能够用我的文件做任意事情,然后差异并提交到存储库。我无法看到如何使用tortoise或svn命令执行此操作。

    16Feb:我认为很多人在开始使用Subversion时遇到的另一个问题是,如果你不想进行“初步结账” - 说你想在生产网站上进行更改。

9 个答案:

答案 0 :(得分:2)

我已经使用了CVS一段时间了,厌倦了它并想要更好的东西。我已经开始使用SVN但后来发现了Bazaar。对于同时使用great GUI和命令行的初学者和高级用户来说,它是最好的工具。它支持许多不同的workflows,您可以使用或不使用服务器,单独使用或在命令中使用它。它是fastcross platform,与launchpad code hosting集成,支持subversion repositories以及大量其他featuresplugins。它被Ubuntu,MySQL,Emacs和many others使用。 Bazaar是Canonical提供的免费开源软件,也是GNU Project的一部分。有关详细信息,请参阅“Why Switch to Bazaar?”和Bazaar home page

答案 1 :(得分:1)

SVN由两部分组成:

  • 存储库 - 服务器端
  • 工作副本 - 存储库的一部分复制到本地计算机

部分svn操作是服务器端操作,其他操作是工作副本。 通常,服务器端命令操作存储库的URL和本地(工作副本)命令 以当地的道路为参数。

您不需要工作副本来执行服务器端操作,如下所示:    - 浏览存储库    - 查看日志历史记录    - 预览单个文件或文件夹    - 差异分支    - 预览属性    - 等等。

您可以使用svn命令行客户端或任何SVN GUI客户端 - Tortoise Svn http://tortoisesvn.tigris.org/是Windows中最受欢迎的一种 服务器端和客户端操作。

如果您的存储库URL为http://yoursvnserver/repo,则命令如下:

答案 2 :(得分:1)

如果您尝试从Visual Studio执行这些“任意事物”,您可以使用AnkhSVN(VS集成,如VSS)或VisualSVN(使用TortoiseSVN进行大多数存储库操作,并在VS中添加自己的功能除此之外)。

请参阅AnkhSVN vs VisualSVNAnkhSVN versus VisualSVN。 (看起来像是一个重复的答案)

稍后添加Which would you rather use: VisualSVN or AnkhSVN?

答案 3 :(得分:1)

我建议使用Git,Bazaar或其他VCS,当您移动源时,不要求您告诉它。我最了解Git,所以我会说,当你移动文件时你不需要告诉它,你不需要在你自己的每个目录中维护特定于VCS的目录。你可以做很多复杂的事情,但你不必把自己暴露在复杂的位置:)。

答案 4 :(得分:0)

我不完全确定我理解你的问题,但如果你需要Subversion的客户端gui工具,请看看Tortoise Svn http://tortoisesvn.tigris.org/

答案 5 :(得分:0)

SVN在工作副本与“服务器”的关系中是一个不同的野兽。以下是我依照“服务器”的顺序在这个角度对一些修订系统进行分组的方法:

  1. TFS,Perforce
  2. SVN,CVS
  3. Mercurial,Git

答案 6 :(得分:0)

似乎使用--force选项和add可以解决大多数问题。

如果.svn文件丢失,我认为最好的解决方案是将它们放回(例如从存储库中),但我还没有找到关于此技术的讨论或脚本支持。

答案 7 :(得分:0)

如果您使用Subversion 1.7,则顶级工作目录中只有一个.svn目录,而不是在所有子目录中展开它们。这使得Subversion与git和其他版本更相似,并且可以使您更容易在子目录中移动。

答案 8 :(得分:0)

如果你使用Subversion,那么Bazaar(bzr)实际上很适合作为Subversion客户端。对于您的特定问题,它有一个可能有用的命令:bzr mv --auto,它会在您手动移动时尝试跟踪更改。

如果您可以选择使用您喜欢的任何工具,git会很好地重命名,如果您只是执行git add -A则自动识别重命名,这会添加任何新文件并删除自上次检查后删除的所有文件-in。