Ваш собственный регистратор просто должен перезаписать метод Logger#format_severity
, что-то вроде этого:
class MyLogger < Logger
SEVS = %w(DEBUG INFO WARN ERROR FATAL VERBOSE TRAFFIC)
def format_severity(severity)
SEVS[severity] || 'ANY'
end
def verbose(progname = nil, &block)
add(5, nil, progname, &block)
end
end
В repo_a:
git remote add -f b path/to/repo_b.git
git remote update
git diff master remotes/b/master
git remote rm b
Можно использовать следующую команду:
diff -x .git -r repo-A repo-B
или для рядом можно использовать:
diff -x .git -W200 -y -r repo-A repo-B
В случае Колоризации каждый различный файл, можно использовать:
diff -x .git -W200 -y -r repo-A repo-B | sed -e "s/\(^diff .*\)/\x1b[31m\1\x1b[0m/"
После того, как вы разместили обе ветки в одном репозитории, вы можете сделать git-дифф
. И получить их в одном репозитории так же просто, как
git fetch /the/other/repo/.git refs/heads/*:refs/remotes/other/*
См. http://git.or.cz/gitwiki/GitTips, раздел "Как сравнить два локальных репозитория" в разделе "Общие сведения".
Короче говоря, вы используете переменную окружения GIT_ALTERNATE_OBJECT_DIRECTORIES для доступа к объектной базе данных другого репозитория, а также используете git rev-parse с --git-dir
/ GIT_DIR для преобразования символического имени в другом репозитории в SHA-1-идентификатор.
Современная версия выглядела бы примерно так (предполагая, что вы находитесь в 'repo_a'):
GIT_ALTERNATE_OBJECT_DIRECTORIES=../repo_b/.git/objects \ git diff $(git --git-dir=../repo_b/.git rev-parse --verify HEAD) HEAD
где .../repo_b/.git
- путь к объектной базе данных в repo_b (это был бы repo_b.git, если бы он был "пустым" репозиторием). Конечно, вы можете сравнивать произвольные версии, а не только HEAD.
Обратите внимание, что если repo_a и repo_b - один и тот же репозиторий, то, возможно, имеет смысл поместить их оба в один репозиторий, либо используя "git remote add -f ...
" для создания ника(ов) для репозитория для повторных обновлений, либо подчинившись "git fetch ...
"; как описано в других ответах.