在我的存储库中,我存储了几个外部库。当新版本的库可用时,我执行以下任务以在我的存储库中更新它:
是否有更好(或更简单)的方法来完成此任务?
请注意,我不能使用svn:externals,因为我使用的只有少数几个库提供了SVN访问权限。
答案 0 :(得分:3)
您所做的实际上是管理供应商分支的最简洁方法,尤其是如果您有自己的代码自定义。
在许多情况下,可能不需要跟踪外部lib的已删除文件,但OTOH很容易编写脚本,因此我会继续使用此过程。无论如何,我都是这样做的。
答案 1 :(得分:2)
如果您使用的是Mac并安装了XCode,我只是发现了一种非常快速的方法。我确信必须有其他文件比较应用程序可以做到这一点,但这是我拥有并测试它。
打开FileMerge(/ Developer / Applications / Utilities / FileMerge),在比较文件下,选择旧版本作为左侧,新版本作为右侧。点击比较,然后在结果屏幕上,选择左列中的所有目录和文件。然后,在“合并”下拉列表中,选择“使用权限”或按下Cmd-3。系统可能会要求您指定合并目录。如果是,请浏览到原始版本的目录并选择该目录。
如果您现在在库目录中svn status
,您将看到已更改文件的列表。 svn add
或svn delete
标有?
或!
的人。登记入住!
如果您在此过程中的任何时候搞砸了并想重新开始,那很简单:
find . -type f -not -path '*.svn*' -exec rm {} \;
svn update --depth=infinity .
答案 2 :(得分:1)
我认为svn externals正是你要找的。可以在此处找到一些好的文档:http://svnbook.red-bean.com/en/1.0/ch07s03.html
答案 3 :(得分:0)
您可以为每个库创建一个新的存储库。然后,当新版本到达时,只需将其复制到库存储库的主干中,您应该看到SVN识别的修改和新文件 - 不需要先删除旧文件。删除文件是另一回事 - 但我希望你的库不会像疯了一样丢失文件,所以你可以手工管理它。
然后,一旦检入了所有更改,您就可以将主干标记为更新版本(可能与库的版本相匹配),并将该标记作为消费项目的外部标记。
答案 4 :(得分:0)
您可以删除svn中的整个目录并使用新版本再次添加(假设库位于其自己的目录中而不与其他库混合)。无论如何,您不需要第三方库的制造历史记录。
答案 5 :(得分:0)
我做了类似的事情,我将一个源代码树复制到我设置的用于在本地跟踪它的仓库中。
当有新版本时:
就这么简单。显然,您没有获得完整的更改历史记录,因为您一次只跟踪1个版本,提交最新更改,但除此之外它非常有效。