我认为我没有正确理解 gitinfo2 包的工作流程。文档说(缩写):
- 编辑并格式化 abc.tex 直到准备发布为止
- 提交 abc.tex 的发布版本
- 标记发布
- 结帐 abc.pdf
- 格式化并提交 abc.pdf 的发布版本
我的问题:如何将 Git 标记与格式化的 PDF 对齐?所描述的工作流程显示了两次提交...当我遵循它时,提交历史记录中给定的标记是“落后一次”。结果是:在签出给定标记的版本时,PDF 不包含该标记。
使用 smartgit 或命令行工具 git 时我没有看到不同的行为。
这应该是这样的吗?有人能帮我吗?
谢谢你,
托马斯
编辑:添加图片来说明我的问题。
如屏幕截图所示(Smartgit 的图形日志视图),给出标签的提交和添加 pdf 的提交(包含正确的发布信息)并不相同。--> 当签出“Release 1.34”时,PDF 没有正确的信息。只有下列的提交包含一组正确的数据。
编辑2:
作为目前的解决方法,我正在按照所述在 PDF 提交后移动标签在这篇文章中。
答案1
主要假设是abc.pdf
正在被 跟踪git
。
以下是命令行步骤的列表,用于保持发布号为最新(假设abc.pdf
之前某个时间点已经提交过)
(从干净的 repo 开始,对 abc.tex 进行修改并编译)
git add abc.tex
git commit -m "my commit message goes here"
git tag -a 1.34
git checkout abc.pdf
pdflatex abc
git add abc.pdf
git commit -m "updated release number in pdf"
这是我用过的文件abc.tex
\documentclass{article}
\usepackage[mark,grumpy]{gitinfo2}
% gitinfo2 settings
\renewcommand{\gitMark}{Release: \gitRel}
\begin{document}
hello world
\end{document}
你的发布标签可能不符合你的预期,原因之一可能是它没有被
RELTAG=$(git describe --tags --long --always --dirty='-*' --match '[0-9]*.*' 2>/dev/null)` in the `.git/hooks/post-.*
文件。如果您的标签以数字以外的任何内容开头,则需要--match
相应地更改部分。例如,如果您的标签以 开头V
,如V3.2.2
,那么您可以使用
RELTAG=$(git describe --tags --long --always --dirty='-*' --match 'V[0-9]*.*' 2>/dev/null)` in the `.git/hooks/post-.*
答案2
感谢 cmhughes 的支持!
我将总结一下:
我的问题是一个与有关的问题git
。gitinfo2
应该像这样工作 - 这对我来说很好。
从这里开始:
我们可以
然后在即将出现的对话框中进行更改(看起来像这样):
pick 2840179 Changing abc.tex
pick 00d844f Adding abc.pdf
# Rebase 8c99d54..00d844f onto 8c99d54
#
....
第二个pick
(指向最后一次提交)变成squash
。
这最终会形成(也许)更美好的历史。但是,我们之后还必须用 重新标记git tag -fa 1.34
。否则我们会丢失标签...:
托马斯