Дата и время публикации:
Проблема и решение
1. Cуть проблемы
1. Характер неисправности
Заключается в том, что в результате выполнения скрипта ./configure и команды make образования файлов в одной и той же корневой директории проекта с исходными файлами, управляемой Git.
Поэтому, во избежание попадания нежелательных файлов, образованных в процессе сборки и конфигурации, таких как объектные файлы, сгенерированные файлы утилиты Make, производные заголовочные файлы config.h, журналы диагностических сообщений типа config.log и прочие файлы не относящиеся к исходным кодам проекта .
Соответственно, которые необходимо экранировать при выполнении запроса отправки обновлений в репозитарий (англ. checkout) .
2. Решение
Приводится предлагаемое справочной страницей на файл .gitignore и опубликованным на GitHub проекте procps_ptree .
Для получения списка нежелательных файлов (выделенных красным) можно воспользоваться командой "git status", как показано в дампе 2.1
Дамп 2.1
user@home:~/.../procps_ptree$ git status На ветке coverity_scan Ваша ветка обновлена в соответствии с «origin/coverity_scan». Неотслеживаемые файлы: (используйте «git add <файл>…», чтобы добавить в то, что будет включено в коммит) Makefile autom4te.cache/ config.h config.log config.status man/Makefile src/.deps/ src/Makefile src/main.o src/output.o src/parser.o src/procps_ptree stamp-h1 Makefile autom4te.cache/ config.h config.log config.status man/Makefile src/.deps/ src/Makefile src/main.o src/output.o src/parser.o src/procps_ptree stamp-h1
Таким образом, попадающих под игнорирование файлов во время выполнения команды "git add ." согласно приведенных в справочной страницы на .gitignore можно свести к следующим правилам фильтрации, как показано в дампе 2.2
Дамп 2.2
user@home:~/.../procps_ptree$ touch .gitignore && nano .gitignore ... Makefile config.h *.o *.log *.status stamp-h1 autom4te.cache/* man/Makefile src/.deps/* src/Makefile src/*.o src/procps_ptree
Соответственно в перечень игнорируемых файлов запросом "git add" определен следующими правилами:
- любые файлы Makefiles;
- заголовочный файл config.h, формируемый автоматически при выполнении скрипта ./configure;
- любых объектных файлов в корневой ./ и поддиректории исходных текстов, определяемых правилом *.o, а так же исполняемые файлы типа src/procps_ptree ;
- журналы *.log и статуса выполнения *.status .
В завершении выполняем цепочку действий по добавлению файла .gitignore в репозитарий на GitHub , как показано в дампе 2.3
Дамп 2.3
user@home:~/.../procps_ptree$ git add -f .gitignore user@home:~/.../procps_ptree$ git commit -m "Start to append ignore patterns to git" user@home:~/.../procps_ptree$ git push
Для проверки игнорируемых файлов можно использовать следующие команды, как показано в дампе 2.4
Дамп 2.4
user@home:~/.../procps_ptree$ git check-ignore -v config.h .gitignore:2:config.h config.h user@home:~/.../procps_ptree$ git check-ignore -v src/*.o .gitignore:11:src/*.o src/main.o .gitignore:11:src/*.o src/output.o .gitignore:11:src/*.o src/parser.o
После чего, можно переходить к изменениям исходного кода с последующим обновлением удаленного репозитария по запросу "git checkout".
В случае же попадания в репозитарий на GitHub нежелательных файлов, необходимо их исключать с помощью команды git rm --cached", как показано в дампе 2.5
Дамп 2.5
user@home:~/.../procps_ptree$ echo info.text >> .gitignore user@home:~/.../procps_ptree$ git rm --cached info.text rm info.text user@home:~/.../procps_ptree$ git commit -m "Start ignoring info.text" user@home:~/.../procps_ptree$ git push
Библиография
3.1 Git — gitignore Documentation
3.2 .gitignore file - ignoring files in Git | Atlassian Git Tutorial