我一直在与Subversion斗争一段时间,认为这是初学者会遇到的问题。虽然今天我一直在思考它,并意识到问题是它嵌入客户端文件的方式,并且你通过这些嵌入式文件在服务器db上工作。
所以我想知道:
在我使用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时遇到的另一个问题是,如果你不想进行“初步结账” - 说你想在生产网站上进行更改。
答案 0 :(得分:2)
我已经使用了CVS一段时间了,厌倦了它并想要更好的东西。我已经开始使用SVN但后来发现了Bazaar。对于同时使用great GUI和命令行的初学者和高级用户来说,它是最好的工具。它支持许多不同的workflows,您可以使用或不使用服务器,单独使用或在命令中使用它。它是fast,cross platform,与launchpad code hosting集成,支持subversion repositories以及大量其他features和plugins。它被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 VisualSVN和AnkhSVN versus VisualSVN。 (看起来像是一个重复的答案)
答案 3 :(得分:1)
我建议使用Git,Bazaar或其他VCS,当您移动源时,不要求您告诉它。我最了解Git,所以我会说,当你移动文件时你不需要告诉它,你不需要在你自己的每个目录中维护特定于VCS的目录。你可以做很多复杂的事情,但你不必把自己暴露在复杂的位置:)。
答案 4 :(得分:0)
我不完全确定我理解你的问题,但如果你需要Subversion的客户端gui工具,请看看Tortoise Svn http://tortoisesvn.tigris.org/
答案 5 :(得分:0)
SVN在工作副本与“服务器”的关系中是一个不同的野兽。以下是我依照“服务器”的顺序在这个角度对一些修订系统进行分组的方法:
答案 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。