2015-09-16 2 views
7

Я хотел бы сообщить git, чтобы игнорировать файл с именем foo.ext тогда и только тогда, когда существует другой файл с именем foo.txe. Я почти уверен, что это невозможно сделать с синтаксисом .gitignore, но, возможно, есть другие сложные способы, о которых я не думаю?Как сообщить git игнорировать определенный файл, если и только если существует другой файл?

Пример использования: Я часто храню данные документа LaTeX в подкаталоге с именем figures. И я обычно рисую свои фигуры с Xfig. Моя Makefile вызывает fig2dev генерировать пару файлов из figures/foo.fig источника:

  • figures/foo.pdf, файл PDF для графической части,
  • figures/foo.pdf_t, латексной файл для текста, с includegraphics команды, чтобы включать PDF.

Поскольку эти два файла сгенерированы, я хотел бы git игнорировать их. Я мог бы добавить два простых шаблона исключения в мой файл .gitignore, но также случается, что некоторые из моих цифр находятся в обычном PDF-файле, не генерируются из другого источника. И, конечно же, мне бы хотелось git не игнорировать эти файлы figures/bar.pdf.

Я хотел бы добавить что-то вроде:

/\(**\)/figures/\(*\).fig: /\1/figures/\2.pdf /\1/figures/\2.pdf_t 

к моему .gitignore файл, а это означает, что любой файл с именем /<some_path>/figures/<some_name>.pdf или /<some_path>/figures/<some_name>.pdf_t должен быть проигнорирован, если и только если файл с именем /<some_path>/figures/<some_name>.fig существует с тем же <some_path> и <some_name>.

+0

Возможный дубликат [Gitignore файла, если файл с другим расширением существует] (http://stackoverflow.com/questions/28325195/gitignore-a-file-if-file-with-different-extension-exists) –

ответ

2

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

figure-auto/

Если у вас есть только несколько файлов, которые вы не хотите, чтобы игнорировать вы могли бы использовать

figures/*.pdf 
figures/*.pdf_t 
!figures/keep-in-source-control.pdf 
!figures/manually-created.pdf 

Git Ignore Pattern Format

+0

Я знаю, как использовать '.gitignore', и это не то, что я был ищу, но спасибо, я ценю наша помощь. –

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