У меня есть проект, который я отслеживаю как в CVS, так и в GIT. CVS игнорирует папку .git, GIT игнорирует все подкаталоги CVS. Репозиторий GIT был создан с помощью git cvsimport
, поэтому они оба имеют одинаковую историю.Как обрабатывать расширение ключевых слов параллельно Проект GIT + CVS
работает довольно хорошо, за исключением:
Некоторые файлы имеют ключевые слова CVS-стиль, который на cvs update
получить расширенные. GIT затем показывает их как изменения.
Если я удалю расширение ключевого слова (cvsimport было выполнено с помощью -k
, поэтому они не были расширены в репозитории GIT), они больше не отображают изменения в git, а вместо этого отображаются как изменения по сравнению с CVS.
Есть ли способ удержать их в CVS, но не расширен в GIT без их появления в качестве измененных?
Мой частичное решение:
Я использовал .gitattributes и .git/конфигурации, чтобы установить пользовательский фильтр
.gitattributes
*.txt filter=ignId
.git/конфигурации
[filter "ignId"]
clean = ./ignId.sh %f
smudge = cat
ignId.sh
#!/bin/bash
sed -e "[email protected]\\\$Id:[^\\\$]*@\\\[email protected]" $1
и она работает на git diff
и, вероятно, также на git commit
(еще, что один еще не пробовал), но git status
все еще показывает файлы в измененном виде.
Как сделать git status
игнорировать изменения?
Update: Я прочитал здесь Why does 'git status' ignore the .gitattributes clean filter?, что это невозможно сделать git status
показать отфильтрованный выходной сигнал. Он отобразит только правильные поэтапные файлы после git add
. Но не стесняйтесь доказывать это неправильно.
что делать, если вы поручите их расширять? AFAIR «Id» должен измениться только в том случае, если что-то изменилось в файле. Может вызвать небольшой шум, но не смертельно. – max630
изменить файл -> зарегистрироваться с git -> зарегистрироваться с cvs -> расширение ключевого слова -> зарегистрироваться с git AGAIN. Поскольку git будет иметь более мелкозернистые фиксации, это называется первым и более часто. Почти каждое изменение файла приведет к 2 коммитам вместо одного. –