TeamCity имеет некоторую интеграцию Python .
, Но TeamCity:
Следующее поможет вам в большинстве случаев:
$ clean=`git diff --cached -b`; \ git apply --cached <(git diff --cached -R); \ echo "$clean" | git apply --cached -; \ clean=
Для выпусков git до 1.7.0 он не работает, если в одном или нескольких файлах есть изменения, состоящие только из пробелов. Например,
$ git diff --cached -b diff --git a/file1 b/file1 index b2bd1a5..3b18e51 100644 diff --git a/file2 b/file2 new file mode 100644 index 0000000..092bfb9 --- /dev/null +++ b/file2 [...]
Пустая дельта (из file1
выше, которая действительно должна быть подавлена) делает git-apply
недовольным:
fatal: patch with only garbage at line 3
ОБНОВЛЕНИЕ: 1.7.0 выпуск git устраняет эту проблему .
Предположим, наш репозиторий находится в следующем состоянии:
$ git diff --cached diff --git a/foo b/foo index 3b18e51..a75018e 100644 --- a/foo +++ b/foo @@ -1 +1,2 @@ -hello world +hello world +howdy also
Затем мы могли бы выполнить приведенные выше команды для разветвления индекса и рабочего дерева:
$ git diff --cached diff --git a/foo b/foo index 3b18e51..1715a9b 100644 --- a/foo +++ b/foo @@ -1 +1,2 @@ hello world +howdy also $ git diff diff --git a/foo b/foo index 1715a9b..a75018e 100644 --- a/foo +++ b/foo @@ -1,2 +1,2 @@ -hello world +hello world howdy also
Если все изменения внесены только пробелами, вы увидите
error: No changes
. Я подозреваю, что исправление индекса и оставление нежелательных изменений в дереве работы удивят или даже раздражают большинство пользователей, но вопрос о таком поведении и задавался.