реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Перемещение внутри репозитория SVN, не отображает часть истории
cf7k
сообщение Aug 30 2010, 22:14
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 14-03-06
Из: Санкт-Петербург
Пользователь №: 15 227



Всем здрасьте. smile.gif

пользуемая софтина: svn + черепаха

Имею некоторый проект, который долго и муторно пилится и хранится всё это под SVN'ом. Изначально я ставил SVN чтоб не плодить много бэкапных копий - чтоб не задумываться "а не потер ли я чего за зря". Соответственно, по неопытности, структурой trunk/branches/tags не заморачивался - все складывал в корень репозитория.
Ныне же возникла потребность поддерживать старые аппаратные версии и пилить новые. До некоторого количества терпения пилил всё в одном путем макропереключений в исходном коде, но код стал распухать из-за одновременного присутствия условий компиляции для всех аппаратных версий. Вот я и дошел до необходимости сделать "по-нормальному".

Собственно, возникла проблемка.
Создаю в имеющемся репозитории папки trunk/branches/tags, переношу в черепашьем repo-browser'е все свои исходники в trunk, делаю branches и т.д. но вся история до переноса
более в логе не показывается.

Вопрос 1: оно так должно быть и я чего-то не понимаю, или это баг?
Вопрос 2: как сделать так, чтоб вся предыстория отображалась?

Провел эксперимент:
I. создаю "по-нормальному" проект
Прикрепленное изображение
Прикрепленное изображение


делаю ветвления:
Прикрепленное изображение

Прикрепленное изображение


Всё нормально.

II. моделирую свою ситуацию - сначала создаю в корне проект, правлю его, и далее уже занимаюсь ветками
Прикрепленное изображение
Прикрепленное изображение


далее импортирую структуру trunk/branches/tags и переношу в нее исходный код.
вот собственно то что у меня вызвало закономерный вопрос:

Прикрепленное изображение
Прикрепленное изображение


А где все мои старания, добытые непосильным трудом? smile.gif
Из картинок видно, что все что до ревизии 5 - ну никак не хотит отображаться.

Переключаться на корневой каталог репозитория - не кошерно(хотя, вроде, все комментарии изначально привязывались к корню) - тогда в каталог проекта вытаскивается все что есть в репозитории, граф ревизий оно всё равно нормально не строит, а лог, соответственно, отображает для всех аппаратных версий в порядке добавления правок:

Прикрепленное изображение
Прикрепленное изображение


Хотелось бы, чтоб все стало как будто бы изначально базировалось на trunk/branches/tags:

Прикрепленное изображение


Простите за "многа букафф". Спойлеры ставил вслепую, т.к. они у меня глючат...
Go to the top of the page
 
+Quote Post
scifi
сообщение Aug 31 2010, 13:45
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 3 020
Регистрация: 7-02-07
Пользователь №: 25 136



Возможно, Вы перенос неправильно сделали. То есть просто добавили все файлы заново.
Если честно, я структурой trunk/branch/tag не пользовался. Однако, насколько я помню, в SVN это всего лишь папки. Просто в клиенте есть операции, которые ссылаются на эти папки. А внутри хранилища ветвления записываются как операции копирования. Причём копирование - это всего лишь ссылка на оригинал (не плодить же дублирующиеся данные).
Так вот, в черепахе я так и не нашёл в контекстном меню операцию копирования. Обхожу так: делаю переименование (а это копирование+удаление оригинала), затем откат, в окне отката выбираю восстановить удалённые, но оставить новую копию.
Что интересно, в обозревателе хранилища в контекстном меню такая операция есть.
Так что советую попробовать трюк с переименованием.
Go to the top of the page
 
+Quote Post
cf7k
сообщение Aug 31 2010, 15:57
Сообщение #3


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 14-03-06
Из: Санкт-Петербург
Пользователь №: 15 227



Цитата(scifi @ Aug 31 2010, 17:45) *
Возможно, Вы перенос неправильно сделали. То есть просто добавили все файлы заново.
??? Не осознал...
Я делал в черепашьем repo-browser'е (именно в нем, а не в виндовом проводнике - т.е. операцию над репозиторием, а не с рабочей копией) - просто схватил все каталоги исходных кодов и перетащил в каталог trunk.

И простым командным svn move тоже получал аналогичный результат.

Цитата(scifi @ Aug 31 2010, 17:45) *
...Так что советую попробовать трюк с переименованием.
Всё бы замечательно, да вот только чтобы что-то переименовать - надо это что-то иметь. В данном случае подразумевается каталог с пустым именем - т.е. его не существует. Его в trunk не переименовать.

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

Мне почему-то кажется, что там делается Copy (создание ветки) и потом Delete оригинала. В результате новая ветка получает новую жизнь (и соответственно пустую историю), а старая - убивается (вместе с историей).

Пробовал отзеркалить репозиторий в другой, но в подкаталог trunk. Не даёт.

Может есть какой "грязный хак"? smile.gif
Go to the top of the page
 
+Quote Post
cf7k
сообщение Sep 1 2010, 12:53
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 14-03-06
Из: Санкт-Петербург
Пользователь №: 15 227



Ура!!! нашел!!!

svnadmin.exe dump ПУТЬ_К_РЕПОЗИТОРИЮ > d:\tmp.dump

удалить старый репозиторий (естественно, сначала попробовал на отдельном)
создать там же новый, но пустой
импортировать структуру trunk/branches/tags из какого-нить темпа. Можно и ручками в репозитории создать - но это лишние правки в нем появятся.

svnadmin.exe load ПУТЬ_К_РЕПОЗИТОРИЮ --force-uuid --parent-dir trunk < d:\tmp.dump

История сохраняется, граф ревизий черепаха рисует правильно, номера правок смещаются на +1 (за счет операции импорта структуры t/b/t), можно нормально создавать ветки.

Проблема решена.

update 02-09-2010 12:31msk.
Еще надо ручками в черепахе убить закэшированные хранилища! А то кровушки оно попьёт!
Go to the top of the page
 
+Quote Post
des00
сообщение Sep 6 2010, 01:12
Сообщение #5


Вечный ламер
******

Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453



только что проверил, у меня при копировании файлов история сохраняется, использую TortoiseSVN 1.6.7, Build 18415


--------------------
Go to the top of the page
 
+Quote Post
cf7k
сообщение Sep 6 2010, 12:06
Сообщение #6


Частый гость
**

Группа: Свой
Сообщений: 82
Регистрация: 14-03-06
Из: Санкт-Петербург
Пользователь №: 15 227



Может я что-то не так делал или неправильно поставил себе задачу... допускаю... Но что в данном случае означает при копировании, и файлов?
Мне не нужно было ничего копировать - я переносил внутри репозитория "назад во времени". Потому так подробно расписал проблему для минимизации вероятности неправильного понимания.

TortoiseSVN 1.6.10, Сборка 19898.
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 10th July 2025 - 07:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01432 секунд с 7
ELECTRONIX ©2004-2016