× К оглавлению На главную Об авторе

Дата и время публикации:    

Проблема и решение

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" определен следующими правилами:

В завершении выполняем цепочку действий по добавлению файла .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

Сайт разработан в соответствии с рекомендациями консорциума W3C для языка разметки HTML5.

Об авторе можно прочитать здесь.

Copyright © 2015-2019 Андрей Ржавсков