Отменить удаление файла в ClearCase - PullRequest
12 голосов
/ 08 января 2011

У меня есть представление ClearCase с папкой и двумя файлами.Я извлекаю папку, удаляю файл и снова проверяю папку. У меня остается одна папка и один файлЕсть ли способ вернуть мой файл?Я использую стандартный набор инструментов Windows, который включает в себя cleartool.

Ответы [ 3 ]

21 голосов
/ 08 января 2011

Да, можно получить файл обратно. Это важная особенность ClearCase (и время от времени спасатель).

Допустим, ваш каталог /vobs/somevob/somedir. Версия каталога с двумя файлами была /main/3; поэтому версия с одним файлом была /main/4. Брошенный файл /vobs/somevob/somedir/crucial. Предполагая, что ct является псевдонимом для cleartool, вы затем делаете:

cd /vobs/somevob/somedir
ct co -c 'Recover file crucial' .
ct ln .@@/main/3/crucial .
ct ci -nc .

Первая строка означает, что мне не нужно вводить путь к каталогу в трех других командах; в противном случае это необязательно. Вторая строка проверяет каталог, чтобы его можно было редактировать. Последняя строка проверяет в измененном каталоге. Третья строка - это место, где происходит магия ...

Строка ct ln .@@/main/3/crucial . идентифицирует файл crucial, который был замечен в версии /main/3 каталога ., и связывает его с текущим каталогом (извлеченная версия каталога). Версия файла, которую вы видите, будет той, которая выбрана вашим cspec, но правильный вид находится в представлении (при условии, что вы действительно подберете /vobs/somevob/somedir@@/main/5 с вашим cspec).

(Обратите внимание, что вы не ограничены выполнением ссылки на одну версию назад; при необходимости вы можете восстановить файл через 10 лет и 20 версий. Хотя вы можете связать файл сразу с двумя каталогами, это очень не рекомендуется; вместо этого используйте символическую ссылку. Вы можете восстановить удаленный файл в другой каталог из его последнего известного расположения.)

9 голосов
/ 08 января 2011

Добавить к ответу Джонатана:

  • вы можете выполнять каждый шаг, который он описывает, графически, через дерево версий родительского каталога : объединить версию, которая по-прежнему ссылается на ваш файл, с версией текущей версии который больше не ссылается на ваш файл).
    Выполнить слияние «графически» (выберите опцию «графическое слияние»)
    Затем вы можете выбрать файл, который хотите восстановить.

  • Вы также можете удалить эффект последней регистрации (все еще для родительского каталога) через merge -delete:

Внимание : Если в этой версии было сделано более одного изменения в каталоге, эти изменения также могут быть отменены. Используйте команду cleartool lshistory, чтобы определить, какие другие изменения были внесены в эту версию каталога.

  1. Определите версию, в которой элемент был rmnamed.
  2. Используйте cleartool merge -delete, чтобы удалить изменения, внесенные в эту версию каталога.

    Например:

    cleartool merge -to . -delete -version \main\17
    
  3. Если единственным изменением, внесенным в эту версию, было удаление нужного элемента, это изменение должно быть внесено автоматически (см. Об осторожности).

0 голосов
/ 25 января 2011

Чтобы добавить к более ранним комментариям, я бы предложил вместо "удаления" элементов из ClearCase просто назвать их по имени. Таким образом, вы на самом деле не удаляете файлы, а скрываете их. Вы можете снова использовать команду rmname для извлечения (отображения) файлов в будущем.

...