我在LaTeX写了一篇很长的文档。我有自己的工作电脑和笔记本电脑,我都在工作。我需要保持两台计算机之间的所有文件同步,并且还希望保留修订历史记录。我选择git作为我的DVCS,我在我的服务器上托管我的存储库。我也使用Kile + Okular进行编辑。 Kile没有集成的git插件。我也没有在这篇文章中与任何人合作。我也在考虑在codaset上放置另一个私有存储库,如果由于某种原因我的服务器无法访问。
在这种情况下,推荐的工作流程是什么?如何在这个工作方案中安装分支?有没有办法比较同一个文件的两个版本?怎么用藏匿处?
答案 0 :(得分:371)
答案 1 :(得分:11)
我也有类似的工作流程。即使一个分支正在处理,我发现为不同的工作状态分别设立分支是有益的。例如,假设向您的顾问发送一份好的草稿草稿。然后,你得到一个疯狂的想法!你想开始改变一些核心概念,重新修改一些主要部分等等。所以你分支并开始工作。您的主分支始终处于“可释放”状态(或者在那个时刻尽可能接近)。因此,虽然你的另一个分支是疯狂的并且有一些重大的变化,如果另一个发布者希望看到你有什么,或者你是一个学生提交到会议,主分支总是可以发布,准备好(或准备展示你的顾问)。如果你的博士生顾问想在早上第一件事看到草稿,是的,你可以存储/暂存/提交当前的更改,使用标签或搜索日志,但为什么不保留单独的分支?!
让我们说你的主分支机构具有“可释放”的工作状态。您现在想要将其提交给多个同行评审的期刊,每个期刊对相同的内容都有不同的格式要求,并且您期望他们回来时会有几个不同的小批评,关于如何编辑论文以适合读者等。您可以轻松地为每个日记创建分支,进行日记帐特定更改,提交,并在收到反馈时在每个单独的分支上进行更改。
我还使用Dropbox和git创建了上面描述的系统。您可以在Dropbox文件夹中创建一个简单的存储库。然后,您可以从任一计算机推/拉到您的保管箱,以保持最新状态。该系统通常仅在协作者数量较少时才有效,因为如果人们试图同时推送到Dropbox仓库,则可能会出现损坏。
从技术上讲,您也可以将一个存储库保留在Dropbox文件夹中,并从那里完成所有工作。然而,我会劝阻这一点,因为人们已经提到dropbox在同步不断变化的文件(gits内部文件)时遇到一些麻烦。
答案 2 :(得分:7)
我尝试将其作为bash函数实现,我已将其包含在我的~/.bashrc
中,以使其始终可用。
function git-latexdiff {
if [[ $# != 2 ]];
then
printf "\tusage: git-latexdiff <file> <back-revision> \n";
elif [[ $2 -lt 0 ]];
then
printf "\t<Back-revision> must be positive\n";
else
dire=$(dirname $PWD/$1);
based=$(git rev-parse --show-toplevel);
git show HEAD~$2:$(echo $dire| sed 's!'$(echo $based)'/!!')/$1 > $1_diff.tmp;
latexdiff $1 $1_diff.tmp > $1_diff.tex;
pdflatex $1_diff.tex;
okular $1_diff.pdf;
rm $1_diff*;
fi;
}
请注意,此功能需要安装latexdiff
(并在路径中找到)。
找到pdflatex
和okular
。
第一种是我喜欢的处理LaTeX的方法,所以你也可以将它变成latex
。
第二个是我的PDF阅读器,我想你要在gnome或其他解决方案下使用evince
。
这是一个快速版本,考虑到单个文档,这是因为使用git,您将失去大量时间和精力来跟踪多文件LaTeX文档。您也可以让git执行此任务,但如果您愿意,也可以继续使用\include
答案 3 :(得分:3)
另一个选择是使用Authorea,这是科学论文的某种Github。 Authorea中的每篇文章都是Git回购。你编写的LaTeX会被渲染为HTML5(以及编译时的PDF)。
答案 4 :(得分:0)
将此用于版本差异,以防您使用Windows,无需安装,只需一个简单的bat
脚本
它在windows10上完美运行,miktex2.9: