LINUX.ORG.RU

[hg][mq] Что вы делаете с режектами?

 


0

2

В MqTutorial предлагается какое-то адское вырывание гланд, чтобы получить привычные маркеры конфликта. Что делать с .rej не сообразил — он был разлапистым, и я несколько потерялся.

Очень хочется услышать советы бывалых, особенно tailgunner

★★★

У меня конфликты наложения патчей обычно тривиальные, и я их разруливаю руками. Нетривиального конфликта так сразу и не припомню. Может, ты rebase пытаешься сделать?

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

Может, ты rebase пытаешься сделать?

Нет. Была стопка патчей, один из них решил переместить пониже. Насколько понимаю, последовательность:

edit file.rej
patch < file.rej
hg mq qrefresh

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

baverman ★★★
() автор топика
Ответ на: комментарий от baverman

Сочных реджектов у меня на диске не осталось, но, IIRC, *.rej - это не патч. Вообще, поменять местами два зависимых патча - наверное, самая неприятная операция в mq; придется полагаться только на себя. Если бы мне это понадобилось, то я бы медитировал на реджект (IIRC, там указано, какое изменение patch пытался наложить, а какое наложенное изменение помешало ему это сделать).

Еще можно попробовать переставить патчи, создать между ними новый, и в этом новом патче добиваться отсуствия конфликта, но это опять же ручной труд.

tailgunner ★★★★★
()
Ответ на: комментарий от tailgunner

IIRC, *.rej - это не патч

Хм, надо будет домой забрать эту репу, и уже внимательно изучить, без горящего танка. Может там действительно, совсем тяжелый конфликт, и даже с маркерами пришлось бы попотеть.

Благодарю.

baverman ★★★
() автор топика
Ответ на: комментарий от baverman

Ну, у меня тяжелых конфликтов не было. Обычно конфликт тривиальный, но из-за него фейлит целый ряд текстуально близких ханков. Реджект получается большой, но испраляется несложно.

tailgunner ★★★★★
()

Я использую такой скрипт:

#!/bin/sh

HGROOT=`hg root`
MERGEFILES=`find $HGROOT -name "*.rej"`

for REJFNAME in $MERGEFILES; do
    ORIGFNAME=`echo $REJFNAME | sed 's/^\(.*\)\.rej$/\1/'`
    patch -m $ORIGFNAME $REJFNAME
    if ! [ $? -eq 0 ]; then
        echo "Unresolved $ORIGFNAME"
        hg resolve -u $ORIGFNAME
        mv $REJFNAME $ORIGFNAME.unresolved
        rm -f $ORIGFNAME.orig
    else
        echo "Resolved $ORIGFNAME"
        rm -f $REJFNAME
    fi
done

# remove .orig for resolved files
find $HGROOT -name "*.orig" -exec rm -f {} \;
Sorcerer ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.