在不中断SVN的情况下更新模块吗?


8

是的,这已经让我伤了两天了。我到处都找不到答案!

我在服务器上刷了4.4。我正在通过Unfuddle.com使用SVN。我有一个网站,我想更新很多模块。我只想更新代码,然后检查它是否正常工作(此时数据库更新不是问题),然后提交相关代码。

过去,drush dl会简单地将模块代码下载到旧模块的顶部,而无需删除它。这已不再是这种情况。现在,AFAICT drush删除了模块目录,并将其替换为更新的版本。很好,因为它解决了旧文件的问题,而旧文件不再包含在更新的模块中。

但是,使用drush dl或upc命令会使我感到困惑,因为运行这些命令确实会获得较新的版本,但是它会破坏进程中的SVN数据文件夹,使我到处都遇到“!module / file.php”问题。不再存在的文件。

我被告知,“ drush upc / dl modulename --version-control = svn”应该可以,但是不能。SVN数据仍然被破坏。

这让我不得不面对潜在的噩梦:svn del模块,svn commit -m“已删除的模块”,drush dl模块,(测试模块),svn add模块,svn commit -m“添加的模块”-每一个模块,这是一个完全的恐怖。

我不想设置drush来自动提交更改,我只想下载它们,并在对更改满意后最后全部手动提交。这可以这么难,但是我根本无法使它工作。

我还被告知,迁移到git(是的,我知道unfuddle支持git!)也是一种解决方案,但它不是立即的解决方案,并且在这一点上并不令人满意。

任何人都可以对此有所了解吗?


学习git可能会更容易。
chrisjlee 2011年

Answers:


6

因为运行这些命令的确可以获取较新的版本,但是它会破坏进程中的SVN数据文件夹,而给我留下“!module / file.php”

我正在运行Drush 4.4,但对我而言似乎并非如此。运行drush upcdrush up保持.svn目录不变。您可以svn status查看对模块的更改。新文件用表示?,已删除文件用表示!

测试您网站的功能。对模块仍可正常运行感到满意后,可以使用如下代码段对svn进行添加/删除:

加:

svn status | grep '^\?' | cut -c8- | while read f; do svn add "$f"; done

去掉:

svn status | grep '^\!' | cut -c8- | while read f; do svn rm "$f"; done

也许“销毁svn数据”是我的错误-以前,我没有看到任何错误!但是只是?,我已将其正式添加。就我而言,这也许是一个无知点。我想这是对我以前工作方式的轻松度的期望,因为以前的工作方式(现在由于匆忙解决了问题)实际上是错误的。
NikLP

4

您应该添加--svnsync到您的命令。

范例:

 drush pm-update module_to_update --version-control=svn --svnsync 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.