67 lines
2.4 KiB
Bash
67 lines
2.4 KiB
Bash
|
#!/bin/bash
|
|||
|
# Скрипт, выполняющий hg transplant из текущей ветки для указанной
|
|||
|
# в параметре ветки. Директория .hg (а в случае, если .hg - симлинк, то
|
|||
|
# та директория, на которую указывает .hg) копируется во временную
|
|||
|
# директорию, после чего выполняется hg up -C для указанной в параметре
|
|||
|
# ветки и выполняется hg transplant -b из текущей ветки.
|
|||
|
|
|||
|
CURR_BRANCH=`hg branch`
|
|||
|
RECV_BRANCH=$1
|
|||
|
|
|||
|
# если принимающая ветвь не указана
|
|||
|
[ "$RECV_BRANCH" == "" ] && echo "Usage: $0 branch" && exit -1
|
|||
|
|
|||
|
# переходим в каталог, содержащий .hg
|
|||
|
while [[ ! -d .hg && 'pwd' != / ]]; do cd .. ; done
|
|||
|
|
|||
|
REPO=`pwd`/.hg
|
|||
|
|
|||
|
# если .hg - это симлинк
|
|||
|
[ -L .hg ] && REPO=`pwd`/`readlink .hg`
|
|||
|
|
|||
|
# временная директория
|
|||
|
TMPDIR=/tmp/hg_transplant-$RANDOM$RANDOM
|
|||
|
|
|||
|
# создаём $TMPDIR
|
|||
|
mkdir "$TMPDIR"
|
|||
|
if [ "$?" != "0" ]; then
|
|||
|
echo "Не удалось создать временную директорию"
|
|||
|
rm -rf "$TMPDIR"
|
|||
|
exit -1
|
|||
|
else
|
|||
|
# запрещаем доступ всем посторонним
|
|||
|
chmod 700 "$TMPDIR"
|
|||
|
fi
|
|||
|
|
|||
|
# копируем $REPO в $TMPDIR
|
|||
|
cp -rf "$REPO" "$TMPDIR"
|
|||
|
if [ "$?" != "0" ]; then
|
|||
|
echo "Не удалось скопировать репозиторий во временную директорию"
|
|||
|
rm -rf "$TMPDIR"
|
|||
|
exit -1
|
|||
|
fi
|
|||
|
|
|||
|
# переходим во временную директорию
|
|||
|
cd "$TMPDIR"
|
|||
|
hg up -C $RECV_BRANCH
|
|||
|
|
|||
|
# выполняем transplant
|
|||
|
mergetool=`grep ^merge ~/.hgrc | cut -d= -f2 | head -n1 | sed s~[\ \t]~~g`
|
|||
|
transp_failed_file=`hg transplant -b $CURR_BRANCH 2>&1 1>&3 | grep hunks\ FAILED | sed "s~^.*hunks FAILED -- saving rejects to file ~~"`
|
|||
|
while [ "$transp_failed_file" != "" ]; do
|
|||
|
$mergetool "$transp_failed_file" `echo "$transp_failed_file" | sed "s~\.rej$~~"`
|
|||
|
transp_failed_file=`hg transplant --continue 2>&1 1>&3 | grep hunks\ FAILED | sed "s~^.*hunks FAILED -- saving rejects to file ~~"`
|
|||
|
done
|
|||
|
hg ci -m "права на вновь добавленные файлы"
|
|||
|
hg_automerge.sh && hg push
|
|||
|
|
|||
|
if [ "$?" == 0 ]; then
|
|||
|
echo "Все операции завершились успешно! :-)"
|
|||
|
rm -rf "$TMPDIR"
|
|||
|
exit 0
|
|||
|
else
|
|||
|
echo "Одна из операций потерпела неудачу :-("
|
|||
|
rm -rf "$TMPDIR"
|
|||
|
exit -1
|
|||
|
fi
|