2009-10-21 4 views
10

я хочу, чтобы игнорировать исполняемые файлы, которые не имеют расширениемерзавец - игнорировать файлы, основанные на режиме

Например:

gcc -o foo foo.c 

Я знаю, что я мог бы добавить «Foo» в мой файл .gitignore, но если я решит изменить имя исполняемого файла, мне нужно будет обновить файл .gitignore ...

+0

Вы не можете игнорировать базу файлов в режиме (разрешения), но, поскольку Jefromi говорит, что вы можете игнорировать все файлы, кроме тех, у которых есть расширение. –

ответ

8

Это действительно будет лучше для вас, чтобы вручную поддерживать gitignore. Вы можете сделать это:

* 
!*.* 

исключить все, а затем включить все с, но я подозреваю, что ваши каталоги не имеют расширения «». Конечно, отслеживаемые каталоги по-прежнему будут отслеживаться, но если вы добавите новый, git-status не увидит его, и вам нужно будет использовать add -f, чтобы его получить.

Возможно, это нехорошо предположить Во всяком случае, файлы с расширением не должны отслеживаться. В конечном итоге вы можете получить некоторые из них - например, README и INSTALL довольно распространены. Это намного хуже, чтобы случайно проигнорировать файл, а не модифицировать gitignore. Изменение gitignore может занять несколько секунд, но это будет очевидно, когда вам это нужно. Если вы случайно проигнорируете файл, вы можете легко его не проверить и потерять работу.

10

Обычно я обрабатываю это с помощью makefile hacks. В моей Makefile я есть имя исполняемого $ (имя), а затем я делаю это:

#first rule 
all: gitignoreadd ... more depends 
    ... some commands ... 

gitignoreadd: 
    grep -v "$(name)" .gitignore > temp 
    echo $(name) >> temp 
    mv temp .gitignore 

gitignoreremove: 
    grep -v "$(name)" .gitignore > temp 
    mv temp .gitignore 

Это правило может затем быть просто зависимость от того, чтобы делать где это необходимо. Затем вы обычно имеете правило «make clean» следующим образом:

clean: gitignoreremove 
    rm *.o *.othergarbagefiles $(name) 

Это должно сделать трюк. Это взломать, но это работает для меня. Единственное, что вы должны запустить make clean перед изменением имени, чтобы автоматически очистить все.

Смежные вопросы