В Subversion каковы лучшие практики для изменения исторических файлов? - PullRequest
1 голос
/ 28 марта 2009

Допустим, у меня есть файлы

helloworld.c
helloworld.m

Пятнадцать правок назад кто-то слил memroy в helloworld.c, и ему удалось разделить его на несколько веток. Я хочу исправить эту версию в истории во всех ветвях, в которые удалось попасть.

Каков чистый эффект возврата файла и попытки его возврата обратно? Очевидно, что 14 изменений с тех пор я не хотел бы потерять?

Обновление: я уверен, что кто-то сталкивался с этой проблемой, и я хочу знать, что они нашли работы для них и почему.

Неужели я не могу понять, как управляются ветви и стволы, и что мне придется просматривать файл в каждом контексте, в котором он существует?

Ответы [ 5 ]

9 голосов
/ 28 марта 2009

Почему вы хотите исправить историю? Этот трюк постоянно доставляет Star Trek неприятности.

Еще лучше: внести изменения в текущую версию - или отменить текущую версию - и зафиксировать ее. Затем объедините изменения в любые ветви.

3 голосов
/ 28 марта 2009

Вы не хотите изменять историю. История - это последовательность изменений, которые файл прошел, а не вмешательство.

Просто обновите голову каждой ветви и магистрали с помощью исправления утечки памяти и будьте на пути. Обычно хорошей идеей будет указать в новом коммите, что вы отменяете старое изменение. Например:

  1. Человек вводит утечку в r100
  2. Команда вносит изменения в r101-r115
  3. Вы делаете коммит r116 с сообщением коммита: «Возврат r100 из-за утечки памяти»

Удачи,

0 голосов
/ 29 марта 2009

К сожалению, вам нужно будет добавить исправление к каждой голове. Хотя я уверен, что технически есть способ использовать svnadmin dump и dumpfilter, чтобы сделать этот трюк, это будет изворотливое переписывание истории, если не сказать больше, и потребуется перестройка вашего хранилища.

В последней версии tortoisesvn 1.6 имеется действительно хороший граф ревизий, который может помочь вам определить, куда делись все изменения.

0 голосов
/ 28 марта 2009

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

0 голосов
/ 28 марта 2009

Вы можете отменить одну версию. Могут быть конфликты, но вы можете их разрешить.

Или вы можете исправить ошибку в текущих файлах и просто зафиксировать их.

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