所以我有一个问题。我检查了我的冷冻宝石和铁轨,即使你不应该这样做。我认为这很容易,反正也不会那么大。好吧,后来我更新了rails并且这样做删除了vendor / rails目录中的所有.svn文件。我听说我真正应该做的事情只是与svn:externals到我的供应商目录。我究竟需要做什么,如果他们不在我的回购中,卡西斯特拉诺仍然会使用我的冷冻宝石?如果它不使用我的冷冻宝石,我怎样才能正确地重新生成这些.svn文件,因为这个再次发生。

谢谢!

有帮助吗?

解决方案

  1. 要恢复已删除的.svn目录,只需运行svn update。他们会回来的。

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

  3. vendor/pluginsvendor/rails中的任何内容我使用活塞进行跟踪。例如,这就是我在那里获得rails的方式:

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

  4. 要使用活塞gem install piston

    注意我将不得不找到一个不同的/更好的解决方案来替换活塞,因为Rails继续使用git并且可能不会更新subversion存储库。

其他提示

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

我必须提出反对svn:externals的建议有两个原因

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

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

  3. 我的建议是使用活塞或宝石解压缩并管理供应商树中的生产依赖性。

免责声明:我不知道Ruby / Rails,所以我不知道冻结的宝石是什么(虽然我认为它们是编译的二进制文件或标记化的源代码),但我很了解Subversion。

.svn目录只保存Subversion <!>“;簿记<!>”。那里什么都没有,这是不可恢复的。

删除.svn文件根本不是问题。如果缺少.svn目录的目录位于subversion工作副本中的目录树内(您执行结帐的目录),只需删除这些目录,执行svn更新,然后重新创建它们。

如果整个树都缺少.svn文件,请删除整个树并再次执行svn checkout。

svn:externals就像一个<!>“符号链接<!>”;您有项目A和项目B,它使用项目A.您要做的是添加一个引用项目A的库目录的svn:external属性,因此每当您签出项目B时,它将自动从项目A中放入库目录在里面。例如,我经常有一个名为<!> quot; thirdparty <!>的目录;它包含来自其他地方的库的外部,包括evn:对subversion中其他项目的外部引用。

解决这类版本问题的一个技巧是为库(或冻结的宝石)提供单独的发布目录,在需要它们的项目中,使用对相应发行目录的svn:external引用。随着新版本的发布,只需将svn:external属性更改为指向新版本目录和svn update。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top