Имя: Пароль:
1C
 
WinCVS. Как объединить ветку?
Ø
0 ibo
 
25.08.05
10:44
Не могу понять как делать слияние веток. Знающие люди моможите!
1 ibo
 
25.08.05
11:09
Вот структура одного файла
1.1
1.2------UserTest1-branch
1.3 1.2.2.1
1.4 1.2.2.2
Основной ствол и ветка лежат в своей локальной копии.
Хочу объединить ветку с основным стволом, чтобы создалась версия 1.5.
Мои действия:
Позиционируюсь на локальной копии основного ствола->правая кнопка мыши->Update...->закладка Update options->Галка на By revision/tag/branch:->в списке выбираю UserTest1-branch->ОК
Результат: в локальной копии основного ствола версия файла становится 1.2.2.2 и файл точно такой же как в ветке, без изменений в версиях 1.3 и 1.4
Что делаю не так?
2 ADirks
 
25.08.05
12:33
Когда делаешь апдейт, на закладочке merge options выбери правильный тип мержа, и ревизию.
3 ibo
 
25.08.05
13:06
(2)Получилось. Но пишет, что конфликт
<<<<<<< МД.txt
1
=======
1
Ветка
Ветка2
ццццц
111
>>>>>>> 1.2.2.2
хотя прога должна бы добавить строки и всё, или я чего-то не понимаю?
4 ADirks
 
25.08.05
13:10
(3) Ну не вышло автоматом. Вообще-то лучше в таких случаях не умничать, и тупо самому смержить kdiff'ом :)
5 ibo
 
25.08.05
13:30
(4)эх а я то размечтался...
Объясни по шагам, как лучше сделать это смерживание kdiff'ом. С kdiff работаю уже месяцев 5, но как сливать ветку тупо и самому, не догадываюсь.
6 ADirks
 
25.08.05
13:40
(5) Да фигли там сложного?! Значит так:
1) делаешь рабочую копию, чтобы там основной ствол был
2) делаешь граф нужного файла
3) тыкаешь в нужную ревизию
4) жмёшь дифф, так чтоб внешняя диффалка при этом вызвалась (kdiff)
5) в кдиффе жмёшь объединение/объединить текущий файл
6) разрешаешь все конфликты
7) жмёшь save
8) в WinCVS жмёшь update
всё.
7 ibo
 
25.08.05
13:59
(6)т.е. пользоваться штатным слиянием - это стрЁм, тем более внутренние ИД.
Правильно понимаю в связке: 1ЭЗ:) + GComp + CVS ветки только для прикола, пользы от них никакой, только информативность, что мол была трабла, её когда-то решали? Или чего-то не догоняю и можно как-то ветки прикрутить на пользу делу?
Ещё вопрос при вызове внешней диффалки а именно kdiff вместо русских букв квадратики. В настройках kdiff-а при каждом нажатии на "Выбрать шрифт" Набор - Латинский, как будто он настройки не сохраняет. В "Региональные настройки" язык Русский, кодировка CP 1251. Но если просто запустить kdiff и указать файлы, то всё нормально. В чем трабла, и как сделать, чтобы из WinCVS запускался kdiff нормально?
8 ibo
 
25.08.05
14:02
(6) вопрос про пункт 8)
надо жать update или Commit...?
9 a13x
 
25.08.05
14:05
(8) commit
10 ADirks
 
25.08.05
14:09
(7) Атоматический мерж - он же не умеет конфликты разрешать. Он просто напросто оставляет конфликтный кусок в тексте. Кдифф делает практически то же самое - т.е. заставляет тебя разрешать конфликты - только выглядит это более наглядно.
Использование веток - это вообще твоё личное дело. Хочешь юзай, не хочешь - не юзай. Если они кажутся бесполезными - значит так оно и есть в данном конкретном случает. Когда они понадобятся ты сам скорее всего поймешь.
Там надо не шрифт выбирать, а в региональных настройках (самая последняя закладка) выбрать кодировку 1251. Если у тебя версия меньше 0.9.88 - рекомендую обновиться.
11 ibo
 
25.08.05
14:25
(10)Что в понятии мержа конфликт? Если я добавлю пару строк в конец файла это ведь не конфликт, а он мне его не объединил :(((
-----
KDiff3 Version 0.9.88
Я ведь и пишу в (7):В "Региональные настройки" язык Русский, кодировка CP 1251.
Что за засада?
-----
Про ветки хочется узнать опыт работы с ними. Дело в том, что нас несколько программеров. Я обновляю конфиги. Пока один пишет одно задание, надо обновить конфигу по другому заданию. Да и своя конфигурация уже не так актуальна. В общем каждый делает копию базы, в ней делает задачу, а потом я объединяю. Тяжко!!! Вот и хотел как-нибудь сделать всё по-нормальному. Но пока не допетрил. Поделись опытом.
12 ADirks
 
25.08.05
14:40
(11) Конфликт - это когда диффалка не может однозначно решить, какой вариант предпочесть. Когда просто что-то добавляешь/удаляешь, то такого обычно не бывает.
Если есть несколько долгих проектов, не сильно между собой связанных, то стоит использовать бранчи. Т.е., пока проект не доведён до состояния, когда его можно в рабочую базу выкладывать, он живёт в отдельной ветке. Как только всё готово - заливаешь его в основной ствол. И никакого гемора - в основном стволе всегда имеем рабочий МДшник. Если надо что-то по мелочи подправить, то это уже и в основном стволе можно. Для того и CVS, чтобы в 1С ничего не объединять.
И почаще апдейт рабочих копий делать.
Да, и когда забираешь из репозитария обновление, то собранный МДшник нужно загружать в свою рабочую базу, а не объединять - иначе внутренние идентификаторы расползутся.
13 ibo
 
25.08.05
14:53
(12) Правильно понял, что "Как только всё готово - заливаешь его в основной ствол." заливку надо делать вручную как ты описал в (6)?
Ещё вопрос про внутренние идентификаторы. Почему надо делать замену, ведь при объединении 1С анализирует по наименованию объектов? Я спрашиваю, не для того, чтобы спорить, а чтобы разобраться.
14 ADirks
 
25.08.05
15:01
(13) Если объекты в основном стволе никто не менял, то можно просто скопировать файлы из ветки в рабочую копию с основным стволом, и заапдейтить. Если же кто-то что-то менял, то надо смотреть (и на автомат лучше не полагаться) и мержиться.
Если загружать изменения объединением, то у разных разработчиков моггут получиться разные внутренние ИД у одних и тех же объектов. И при последующих апдейтах полезут конфликты. Поэтому базы разработчиков д.б. всигда синхронизированы по внутренним ИД. В рабочую же базу, где юзвери пашут, можно и объединением заливаться.
Да, рекомендую повнимательнее изучить внутренности файла ОбъектыМетаданных.txt, *.mdp и *.ord файлов. Особенно внимательным нужно быть при добавлении новых объектов - если какой-то файл не скоммитишь, то в результате можно получить битый МДшник, либо МДшник без нового объекта.
15 ibo
 
25.08.05
15:03
(12)Ещё вопрос про апдейт рабочих копий. Это апдейт основного ствола или при слиянии одной ветки со стволом надо другую обновить до последнего состояния основного ствола?
16 ADirks
 
25.08.05
15:11
(15) Тут опять же всё зависит от ситуации. Если тебе не нужны текущие изменения от других разработчиков - то апдейтишься из основного ствола и своей ветки. Если нужны - то из осн. ствола и веток нужных тебе проектов.
Если в проекте, который ведётся в отдельной ветке, понадобятся изменения из осн. ствола, или из других веток - то просто мержишься.
17 ibo
 
25.08.05
15:37
(16) Заглянул в ИдентификаторыКонфигурации.mdp и увидел
  Unknown ID: 7120
Причем это с разными md-хами. Так и должно быть?
18 ibo
 
25.08.05
16:05
(17) Значит так и надо :)
-----------------
Спасибо ADirks, a13x ! А так же всем !
19 fez
 
25.08.05
16:51
(17) Да, так и надо. Оно у всех 7120, а что это такое - знает только БГН.
20 ibo
 
25.08.05
17:08
(19) Спасибо, а я уже думал, что у меня какой-то битый мд.
21 ibo
 
25.08.05
17:26
Разобрался с kdiff-ом. Когда он показывает квадраты, надо зайти в настройки и там выставить ru, 1251. Затем F5. Потом он сам подхватит нашу кодировку. Наверно он запоминает для каждого варианта свою кодировку.
22 a13x
 
25.08.05
18:38
(18) Мне совсем незачто, а Алексею действительно спасибо, и тебе за правильные вопросы :-)
.
Все вопросы/ответы без хирургического вмешательства можно в FAQ помещать.