5

所以我有一个问题。我检查了我的冷冻宝石和铁轨,即使你不应该这样做。我认为这很容易,而且不会有那么大的问题。好吧,后来我更新了 rails 并删除了 vendor/rails 目录中的所有 .svn 文件。我听说我真正应该做的就是对我的供应商目录做一些与 svn:externals 相关的事情。我到底需要做什么,如果我的仓库中没有我的冷冻宝石,capistrano 还会使用它们吗?如果它不使用我冻结的宝石,我怎样才能正确地重新生成那些 .svn 文件,因为这再次发生。

谢谢!

4

4 回答 4

4

就个人而言,我偏爱使用Piston来管理供应商目录。

于 2008-09-23T03:55:18.110 回答
3
  1. 要恢复已删除的.svn目录,只需运行svn update. 他们会回来的。

  2. 我只是检查出口的宝石。我gem unpack <gemname>vendor/gems目录中使用,svn add然后commit从那里使用。

  3. 我使用活塞跟踪的任何东西vendor/pluginsvendor/rails例如,这就是我在那里获取导轨的方式:

    % piston import http://dev.rubyonrails.org/svn/rails/tags/rel_2-0-2/ vendor/rails

得到活塞使用gem install piston

Note I'm going to have to find a different/better solution to replace piston as Rails continues to use git and may not update the subversion repository.

于 2008-09-23T18:42:09.413 回答
2

我不得不反对 svn:externals 有两个原因

  1. 您可能正在部署到无法访问这些 svn 服务的环境中

  2. 当您要部署并且那些 svn external 已关闭时会发生什么?

我的建议是使用活塞或宝石解包并管理供应商树中的生产依赖关系。

于 2008-09-23T11:00:43.640 回答
1

免责声明:我不了解 Ruby/Rails,所以我不知道冻结的 gem 是什么(尽管我假设它们是编译的二进制文件或标记化的源),但我很了解 Subversion。

.svn 目录只保存 Subversion “簿记”。里面没有什么是无法挽回的。

删除 .svn 文件根本不是问题。如果缺少 .svn 目录的目录位于 subversion 工作副本的目录树中的某个位置(您签出的目录),只需删除这些目录,执行 svn 更新,它们就会被重新创建。

如果整棵树缺少 .svn 文件,请删除整棵树并再次执行 svn 签出。

svn:externals 就像一个“符号链接”。你有项目 A 和项目 B,它使用项目 A。你所做的是添加一个引用项目 A 的库目录的 svn:external 属性,所以每当你签出项目 B 时,它会自动从项目 A 中放置库目录在里面。例如,我经常有一个名为“thirdparty”的目录,其中包含来自其他地方的库的外部文件,包括 evn:external 对 subversion 中其他项目的引用。

解决此类版本问题的一个技巧是为库(或冻结的 gem)设置单独的发布目录,并在需要它们的项目中使用 svn:external 对适当发布目录的引用。随着新版本的发布,只需将 svn:external 属性更改为指向新的发布目录和 svn 更新。

于 2008-09-23T05:14:54.360 回答