Как я могу найти историю изменений файла, который был удален, а затем повторно отправлен в SVN?

Это ответ на вопрос "Как сделать Я удаляю 1 файл из ревизии в SVN?", а потому, что у него, вероятно, есть совсем другой ответ, и я считаю, что другим было бы полезно знать ответ. (Я пока не знаю ответа.)

На предыдущий вопрос был дан ответ, и я обнаружил, что невозможно удалить ревизию из SVN. Вторым лучшим решением было удалить файл из SVN, зафиксировать, а затем добавить файл обратно и снова зафиксировать.

Теперь я хочу убедиться, что история изменений исходного файла исчезла. Поэтому я надеюсь, что ответ на вопрос «Как я могу найти историю изменений файла, который был удален, а затем повторно отправлен в SVN?» заключается в том, что вы не можете.


svn
person Guy    schedule 29.08.2008    source источник


Ответы (4)


С простым

svn log -v [folder]

вы можете быстро просмотреть добавление и удаление.

------------------------------------------------------------------------
r14 | kame | 2008-08-29 04:23:43 +0200 (ven., 29 aoû2008) | 1 line
Chemins modifié :
   A /a.txt

Readded a
------------------------------------------------------------------------
r13 | kame | 2008-08-29 04:23:24 +0200 (ven., 29 aoû2008) | 1 line
Chemins modifié :
   D /a.txt

Delete a
------------------------------------------------------------------------
r12 | kame | 2008-08-29 04:23:06 +0200 (ven., 29 aoû2008) | 1 line
Chemins modifié :
   A /a.txt

svn log не покажет файл, svn diff сделает вид, что старой версии не существует, но проверка svn, ориентированная на старую версию, с радостью предоставит вам старый файл.

person Damien B    schedule 29.08.2008

Что заставляет вас думать, что удалить ревизию из Subversion невозможно? Решение, данное на ваш другой вопрос (svndumpfilter), делает именно это (см. параметры --drop-empty-revs и --renumber-revs)! А когда ревизии больше нет, очевидно, нет никакого способа добраться до истории ревизий, потому что ее там никогда и не было.

person Jörg W Mittag    schedule 29.08.2008

Короткий ответ: вы можете

Длинный ответ:

К сожалению (для вас, но, возможно, не для большинства людей), история изменений для удаленного файла все еще существует - просто получить ее немного сложнее.

Вот пример:

$ touch one
$ svn add one
$ svn ci -m "Added file one"
$ date >> one 
$ svn ci -m "Updated file one"
$ date >> one
$ svn ci -m "Updated file one again"
$ svn log file:///repos/one

------------------------------------------------------------------------
r3 | andrewr | 2008-08-29 12:27:10 +1000 (Fri, 29 Aug 2008) | 1 line

Updated file one again
------------------------------------------------------------------------
r2 | andrewr | 2008-08-29 12:26:50 +1000 (Fri, 29 Aug 2008) | 1 line

Updated file one
------------------------------------------------------------------------
r1 | andrewr | 2008-08-29 12:25:07 +1000 (Fri, 29 Aug 2008) | 1 line

Added file one
------------------------------------------------------------------------

$ svn delete one
$ svn ci -m "Deleted file one"
$ svn up
$ touch one
$ svn add one
$ svn ci -m "Adding file one back in"
$ svn log file:///repos/one

------------------------------------------------------------------------
r5 | andrewr | 2008-08-29 12:29:13 +1000 (Fri, 29 Aug 2008) | 1 line

add one back
------------------------------------------------------------------------

Вроде работает (старая история ушла), но если запросить файл на более старых ревизиях, то получится история удаленного файла.

$ svn log -r 3:1 file:///repos/one

------------------------------------------------------------------------
r3 | andrewr | 2008-08-29 12:27:10 +1000 (Fri, 29 Aug 2008) | 1 line

Updated file one again
------------------------------------------------------------------------
r2 | andrewr | 2008-08-29 12:26:50 +1000 (Fri, 29 Aug 2008) | 1 line

Updated file one
------------------------------------------------------------------------
r1 | andrewr | 2008-08-29 12:25:07 +1000 (Fri, 29 Aug 2008) | 1 line

Added file one
------------------------------------------------------------------------
person AndrewR    schedule 29.08.2008

Я бы сказал, что вы не можете - вы создали новый файл и, таким образом, дерево ревизий в глазах SVN.

Может быть возможно восстановить старое дерево независимо (не уверен, удалось ли вам действительно удалить или просто удалить SVN), но между старым деревом ревизий и новым нет связи.

person Matt Mitchell    schedule 29.08.2008