Действительно ли возможно, что исключение выдается в другом потоке? Очевидно, Ваш код вызова является единственным, распараллелил, но возможно библиотека, которую Вы используете, делает некоторые многопоточные операции под покрытиями.
git diff
делает именно это. но это работает только для проектов git.
hg diff
, svn diff
почти каждая система управления версиями может различать деревья каталогов
Из git diff
справочной страницы :
git diff [--options] [-] [
...] [...]
Если указаны ровно два пути и хотя бы один не отслеживается, сравните два файла / каталога. Это поведение может быть вызвано- no-index
.
Если вы хотите сравнить две версии (например, два помеченных релиза или две ветки) в двух разных репозиториях, вы можете использовать прием, описанный в Страница GitTips в Git Wiki, в разделе «Как сравнить два локальных репозитория».
Предполагается, что вы находитесь внутри одного репозитория, а второй репозиторий находится в / path / to / repo
, поэтому его GIT_DIR равен /path/to/repo/.git
, если он является репозиторием, отличным от чистого, вы можете сделать что-то вроде следующего:
$ GIT_ALTERNATE_OBJECT_DIRECTORIES=/path/to/repo/.git/objects \
git diff $(git --git-dir=/path/to/repo/.git rev-parse --verify A) B
где A и B - версии, которые вы хотите сравнить. Конечно, вы также можете указать ограничитель пути в приведенном выше выражении.
Explanation: Переменная GIT_ALTERNATE_OBJECT_REPOSITORIES
может использоваться для объединения команд git в объектную базу данных двух репозиториев. git --git-dir = ... rev-parse ...
используется для превращения имени (расширенного выражения SHA-1) в репозитории, указанного в качестве параметра для параметра git-dir
, в уникальный идентификатор SHA-1. Конструкция $ (...)
помещает результат вызова данной команды в командную строку. git diff
используется для сравнения двух ревизий (где одна из альтернативного репозитория объектов).
Альтернативным решением было бы просто импортировать другой репозиторий в данный репозиторий, используя git remote add
(и git fetch
). Тогда у вас будет все локально, и вы сможете проводить сравнение внутри одного репозитория.
git-dir
, в уникальный идентификатор SHA-1. Конструкция $ (...)
помещает результат вызова данной команды в командную строку. git diff
используется для сравнения двух ревизий (где одна из альтернативного репозитория объектов).
Альтернативным решением было бы просто импортировать другой репозиторий в данный репозиторий, используя git remote add
(и git fetch
). Тогда у вас будет все локально, и вы сможете проводить сравнение внутри одного репозитория.
git-dir
, в уникальный идентификатор SHA-1. Конструкция $ (...)
помещает результат вызова данной команды в командную строку. git diff
используется для сравнения двух ревизий (где одна из альтернативного репозитория объектов).
Альтернативным решением было бы просто импортировать другой репозиторий в данный репозиторий, используя git remote add
(и git fetch
). Тогда у вас будет все локально, и вы сможете проводить сравнение внутри одного репозитория.
git diff
используется для сравнения двух ревизий (где одна из альтернативного репозитория объектов).
Альтернативным решением было бы просто импортировать другой репозиторий в данный репозиторий, используя git remote add
(и git fetch
). Тогда у вас будет все локально, и вы сможете проводить сравнение внутри одного репозитория.
git diff
используется для сравнения двух ревизий (где одна из альтернативного репозитория объектов).
Альтернативным решением было бы просто импортировать другой репозиторий в данный репозиторий, используя git remote add
(и git fetch
). Тогда у вас будет все локально, и вы сможете проводить сравнение внутри одного репозитория.
Это не специфично для git, а как общая утилита сравнения для Windows, Мне очень нравится WinMerge .
Я не совсем понимаю, что вы хотите, но разве для вас недостаточно diff -ur
? Он будет работать даже с каталогами без какого-либо контроля версий.