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

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

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

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

Ответы [ 4 ]

3 голосов
/ 29 августа 2008

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

2 голосов
/ 29 августа 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
------------------------------------------------------------------------
2 голосов
/ 29 августа 2008

с простым

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, нацеленное на старую ревизию, с радостью даст вам старый файл.

1 голос
/ 29 августа 2008

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...