2016-12-13 3 views
5

У меня есть git repo, в котором я храню свои личные документы. Некоторые из этих документов являются файлами LaTeX, а некоторые даже являются PDF-файлами. Я, конечно, хочу, чтобы они были в моих документах репо.Условный Gitignore

Но когда я создаю документ орг-режиме (*.org), я часто строить его, в результате чего эти файлы создаются, если документ орг-режим называется α:

  • α.tex
  • α.pdf
  • авто/α.el

Я не хочу, чтобы отслеживать их, поскольку они генерируются файлы из которых у меня есть исходный код, но я не могу просто игнорировать все *.tex и даже не все файлы *.pdf.

Может .gitignore быть сказано, чтобы игнорировать все файлы, имя которого α.tex или α.pdf, если есть файл с именем α.org с α является переменной для произвольной строки?

+0

Вместо того, чтобы игнорировать эти файлы, было бы проще просто удалить их: http://emacs.stackexchange.com/questions/23982/cleanup-org-mode-export-intermediary-file – Jules

+2

buil d те файлы внутри папки, которые будут игнорироваться в вашем файле gitignore. –

+0

@Jules Не работает. Этот метод избавляется от файла '* .tex' и может избавиться от файла' * .pdf', но я хочу использовать его. Кроме того, этот метод не может удалить файл '* .el', возможно, потому, что он находится в другом каталоге. Я могу видеть, как возможно решение на стороне Emac: если бы можно было создать файлы в каталоге с определенным именем (неважно, является ли он одним и тем же каталогом для всех файлов без матового их местоположения или находится ли он в расположение файла '* .org', оно должно иметь только определенное имя), что бы решить проблему. –

ответ

3

Это невозможно, .gitignore - довольно простой файл и не допускает никаких условных правил.

Однако, как правило, хорошей идеей является подготовка системы сборки для генерации всех промежуточных файлов в какой-либо каталог сборки. Часто используется build или target. Тогда можно просто положить в .gitignore:

/target #/specifies the root path 
/auto # probably your temporary files...? 

Если компиляция выполняется с Makefile, правила могут выглядеть следующим образом:

target/%.pdf: target/%.tex 
     $(LATEX) -o [email protected] $< 
target/%.tex: %.org 
     generate_tex -o [email protected] $< 

(не уверен, что так много о синтаксисе латекса и, конечно, от конкретных команда для генерации *.tex от *.org)

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