无法恢复由svn up -rNNN恢复的文件

时间:2014-09-24 21:02:40

标签: svn github

我在Github上有一个存储库,我使用svn(1.8.5)与它进行通信。 (我不确定它是否重要,但可能是。)

有一个文件,假设a.php当前(例如,在修订版1200中)在存储库中但曾经存在(即它已在修订版中删除,比如,900)。

所以我想查看该文件,并说svn up a.php -r899,我得到了该文件。然后我需要恢复正常的主干,所以我尝试了svn upsvn up a.phpsvn up a.php -r1200,但没有一个工作。所以我仍然在本地副本中有文件,并且它不会在svn status中显示,就好像它在存储库中一样,但它显然不是,因为如果我尝试更改(包括删除)并提交它,我收到一个错误:

svn: E175002: PUT request on '<here was the path>' failed: 500 Internal Server Error

有什么想法吗?

更新。可以通过以下方式重现此问题:

svn co https://github.com/OpenCorpora/opencorpora/trunk
cd trunk/ajax
svn up dict_reload.php -r1501

2 个答案:

答案 0 :(得分:1)

这真的是GitHub效果。对于纯SVN (推荐方式),我在这样的存储库中获得了本地测试用例

>svn log -q -v
------------------------------------------------------------------------
r6 | Badger | 2014-09-26 03:36:26 +0600 (Пт, 26 сен 2014)
Changed paths:
   M /trunk/b.txt
------------------------------------------------------------------------
r5 | Badger | 2014-09-26 03:35:56 +0600 (Пт, 26 сен 2014)
Changed paths:
   M /trunk/a.txt
------------------------------------------------------------------------
r4 | Badger | 2014-09-26 03:35:29 +0600 (Пт, 26 сен 2014)
Changed paths:
   D /trunk/c.txt
------------------------------------------------------------------------
r3 | Badger | 2014-09-26 03:34:39 +0600 (Пт, 26 сен 2014)
Changed paths:
   M /trunk/a.txt
   M /trunk/b.txt
   M /trunk/c.txt
------------------------------------------------------------------------
r2 | Badger | 2014-09-26 03:33:40 +0600 (Пт, 26 сен 2014)
Changed paths:
   A /trunk/a.txt
   A /trunk/b.txt
   A /trunk/c.txt
------------------------------------------------------------------------
r1 | Badger | 2014-09-26 03:31:52 +0600 (Пт, 26 сен 2014)
Changed paths:
   A /branches
   A /tags
   A /trunk
------------------------------------------------------------------------

(在r4中删除了c.txt,从HEAD中删除了我希望/以你的方式/看到r3)预期结果

>svn up c.txt -r 3
Updating 'c.txt':
A    c.txt
Updated to revision 3.

>svn up
Updating '.':
D    c.txt
Updated to revision 6.

答案 1 :(得分:0)

所以我找到了一种克服这个问题的不明显方法。假设删除文件的修订版是1502。

rm a.php
svn up a.php -r1500
svn up a.php -r1502

这样就会被删除。