版本控制软件应该忽略哪些辅助 LaTeX 文件?

版本控制软件应该忽略哪些辅助 LaTeX 文件?

我即将开始使用 Git 对我的 LaTeX 文档进行版本控制,但我很少使用这两个工具。我只想对编译文档所需的文件进行版本控制,但我使用不同的操作系统(OSX、Windows 和不同的 Linux 发行版)。我搜索了.gitignoreLaTeX 文件,找到了 3 个不同的文件:

以下是按字母顺序排列的表格形式的比较:

*.acn               *.acn               
*.acr               *.acr               
*.alg               *.alg               
*.aux               *.aux               .aux
*.bbl               *.bbl               *.bbl
*.blg               *.blg               *.blg
*.dvi               *.dvi               *.dvi
                                        *.fdb_latexmk
*.glg               *.glg               *.glg
*.glo               *.glo               *.glo
*.gls               *.gls               *.gls
*.idx               *.idx               *.idx
*.ilg               *.ilg               *.ilg
*.ind               *.ind               *.ind
*.ist               *.ist               *.ist
*.lof               *.lof               *.lof
*.log               *.log               *.log
*.lot               *.lot               *.lot
*.maf               *.maf               
                    *.mp                
*.mtc               *.mtc               
*.mtc1              *.mtc1              
                                        *.nav
                                        *.nlo
*.out               *.out               *.out
                    *.pdf               
                                        *.pdfsync
                                        *.snm
*.synctex.gz        *.synctex.gz        *.synctex.gz
                    *.tmp               
*.toc               *.toc               *.toc
                    *.top               
                    *.tui               
                                        *.vrb

                    # Mac IDE files             
                    *.swp               
                    *~              
                    *(Autosaved).rtfd/              
                    Backup[ ]of[ ]*.pages/              
                    Backup[ ]of[ ]*.key/                
                    Backup[ ]of[ ]*.numbers/                

                    # Mac finder files and hidden folders               
                    .DS_Store

有人能解释为什么有些可能会从其他地方缺失,以及是否可以将它们全部包含在一个.gitignore文件中以供所有操作系统使用?

答案1

忽略文件列表的原因如下。当您的 VCS 发现目录中没有版本控制的文件时,它会(礼貌地)通知您。例如,在我运行的某个目录中bzr status,我收到以下消息:

tex.SE% bzr status
unknown:
  Project/
  braids.sty@
  bzr_test/
  lessonplan.cls@
  lessonplan.sty@
  listings.sty
  mylectures.sty@
  refs.bib
  tqft.sty@
  unicode-math-chg.sty
  unicode_beamer_test.txt
  xepstricks.xdv

这是一个很有用的功能,因为它可以告诉我是否有我尚未将文件置于 VCS 的控制之下。特别是,如果我发现任何带有后缀的文件.tex,那么我就知道在提交更改之前我忘记了做某事。

忽略文件(在我的情况下)的目的.bzrignore是自动从此列表中删除内容。如果我删除此目录中的该文件,那么我会得到一个列表833文件!要查看这个列表是否很长,我得查看它,看看是否漏掉了某个.tex文件。

忽略文件时要记住的重要事项如下:

  1. 更重要的是关注当下不是那里的文件比那里的文件多。那些不存在的扩展名的文件是那种你会认为“这种扩展名的文件很可能在 VCS 的控制之下”的文件类型。

  2. 这是咨询。忽略文件只是告诉 VCS 您通常会将哪些文件置于其控制之下。您可以完全自由地忽略其建议,并且不是将它列出的文件置于其控制之下,并且您可以完全自由地将它列出的文件置于其控制之下没有列表。

  3. 有可能已更改。实际上,最好从一个最小文件开始(我将在最后给出一个例子),并且只在发现需要时添加扩展名。正如我所说,此文件的主要目的是作为预警系统,以确保所有应该忽略的内容实际上都被忽略了。如果您从某个中央存储库导入忽略文件,然后开始自己创建恰好具有这些扩展名的文件(只是因为您不会想到它们与 TeX 有任何关系),那么您可能会错过一个文件。因此,当您发现建议文件列表太长而无法看到重要的文件时,请向列表中添加更多扩展名。

  4. 它应该是项目特定。一个项目中要忽略的文件不一定与另一个项目中的文件相同。您应该有一个可以安全忽略的小主列表总是忽略,然后根据每个项目添加内容。

  5. 它应该是版本化。不用说,真的!

那么应该包含哪些内容?基本规则是,您应该对以下文件进行版本控制:您直接创建。因此,您不需要版本控制的内容是那些为您创建的内容(例外情况是,如果您没有在每台机器上创建它们的程序副本,gnuplot 数据文件就是一个显而易见的例子)。因此,初始列表应该是您的 TeX 进程创建的文件。正如您所说,您正在使用 LaTeX,以下是一个相当简单的列表:

    *.aux
    *.pdf
    *.ps
    *.log
    *.dvi
    *.tex~

如果您使用的是 BibTeX,请将.bbl和添加.blg到该列表中。如果您的系统习惯于在系统中创建额外的文件,请添加这些文件。这就是 像 之类的东西.DS_Store在这些列表中所做的。这是 Mac 特有的。Linux 不会做这样的事情(它很礼貌)。我不知道 Windows 会怎么做。当您开始使用其他程序和更复杂的软件包时,您会发现新文件如雨后春笋般涌现。如果您生成网页,您会发现自己想要添加一大堆像.4ct和 类似的文件。

因此,总而言之,从小事做起,记住计算机的作用是什么告诉它做什么,而不是相反。

答案2

LaTeX 及其软件包会生成各种辅助文件。还有一些外部工具会创建自己的文件。然后还有一组由 (La)TeX 生成的输出文件,如 DVI、PS 和 PDF 文件,您可能希望或不希望将它们置于版本控制之下。通常您不需要。

某些列表中缺少某些扩展的原因在于扩展的数量很大程度上取决于所使用的软件包和工具。新软件包不断涌现,而这些列表的作者可能不知道或未使用过某些软件包。


我认为最好有一个列表,也许还有软件包及其创建的辅助文件的描述。以下是我刚刚想到的(以及我的svn:ignore列表中的)。我使用了一个扩展类别,我无法立即将其归类到特定的软件包中。

  • (La)TeX:*.log *.aux *.toc

  • 列表:*.lof *.lot

  • 索引:*.idx *.ind *.ilg

  • 词汇表:*.glo *.gls *.glg

  • Bib(La)TeX: *.bbl *.blg

  • hyperref: *。出去

  • svn-multi: *.svn *.svt *.svx

  • standalone格式:*.sta *.stp

  • latexmk工具:*.fdb_latexmk

  • endfloat:*.fff

  • 其他:*.run.xml

答案3

我同意 ShreevatsaR 的评论。对于大多数项目来说,实际上生成的软件包很少 - 这取决于您决定包含哪些软件包。因此,我从一个空的开始.gitignore,只添加我在编译 TeX 文件时实际看到的软件包。

此外,有时随意添加扩展名并不合适.gitignore。例如,如果您有 PDF 图像,那么您可能不想将其添加*.pdf到您的.gitignore,而是想添加yourtexfile.pdf。同样,如果您的所有*.eps图像都是从 makefile 中的其他内容自动生成的(例如,我对大多数图像使用 dia,而 EPS 版本是通过要求 dia 自动转换图形生成的),那么添加 是合适的*.eps

.gitignore最后,您可以通过在行前添加来添加例外!。例如,以下内容将忽略所有自动生成的 PDF 文件,同时注意figure.pdf哪些是手动生成的 PDF 图像。

*.aux
*.dvi
*.pdf
!figure.pdf

答案4

相当多的模块创建了自己的辅助文件。

例如,您可能还会清理:

  • *.lol(列表列表);
  • *.ps(如果这不是您的最终格式);
  • *.idv*.lg;
  • *.4tc,,如果您使用*.4ct*.xreftex4ht

通常,我会对所有源文件进行版本控制。当我使用新模块(或新渲染器)时,在使用 清理代码后make clean,我会运行git status来检查我不知道的辅助文件,然后将它们添加到我的clean规则中(或者.gitignore如果您愿意的话)。

相关内容