我想知道是否有人在通过 TeXstudio 或 Texmaker 编写大型文档时使用过 GitHub 作为版本控制系统?
例如,RStudio 有一个插件,允许从 GitHub 存储库推送和提取 R 项目,从而可以非常轻松地管理已提交的更改并将其提交到实际的存储库。
有没有办法通过 LaTeX 文档“项目”轻松实现这一点?
答案1
您可以在 Texmaker ( User -> User Commands
) 以及 TeXstudio ( Configure -> Build -> User Commands
) 中运行自定义命令。这样就可以从编辑器中调用 Git 命令行工具。此外,在 TeXstudio 中,您可以将其与脚本和触发器相结合,这样您就可以自动触发这些操作,例如在文件保存时。
如果您告诉我您需要哪些 git 命令,我可以提供示例代码。
编辑:
下面是 TeXstudio 的一个示例,其中的命令是通过脚本调用的。在 处创建脚本User Macros -> Edit Macros...
。由于我不太熟悉 git,所以我不知道实际的 git 调用是否正确,但它应该可以说明这个想法。
拉:
对外部程序的简单调用。首次执行脚本时,TXS 将询问您是否信任该脚本来执行外部程序。
推:
这有点花哨。首先,脚本要求用户提交评论。其次,触发器?save-file
意味着每次保存文件时都会调用该脚本。
当然,你可以根据自己的需要,进一步扩展脚本。
答案2
有一个可用的脚本TeXstudio_wiki用于提交和推送。它显示一个下拉菜单,供用户选择两个操作;“提交”或“提交并推送”。您可以手动运行它,也可以使用触发器,例如?save-file
或?close-file
以下是脚本
%SCRIPT
choisedialog = UniversalInputDialog(["Commit","Commit with Push"],"Git","choiseGIT")
choisedialog.setWindowTitle("Git")
choise = choisedialog.get("comment")
if (choisedialog.exec() != null) {
if (choisedialog.get("choiseGIT") == "Commit") {
dialog = new UniversalInputDialog()
dialog.setWindowTitle("Git commit / push")
dialog.add("Committed by TeXstudio", "Comment", "comment")
dialog.add(true, "Commit all Files","allfiles")
if (dialog.exec() != null) {
comment = dialog.get("comment")
if ((dialog.get("allfiles")) == true){
buildManager.runCommand("git commit -a -m \"" + comment + "\"", editor.fileName())
}else{
buildManager.runCommand("git commit " + editor.fileName() + " -m \"" + comment + "\"", editor.fileName())
}
}
} else
if (choisedialog.get("choiseGIT") == "Commit with Push") {
dialog = new UniversalInputDialog()
dialog.setWindowTitle("Git commit / push")
dialog.add("Committed by TeXstudio", "Comment", "comment")
dialog.add("master", "Branch", "branch")
dialog.add(true, "Commit all Files","allfiles")
if (dialog.exec() != null) {
comment = dialog.get("comment")
branch = dialog.get("branch")
if ((dialog.get("allfiles")) == true){
buildManager.runCommand("git commit -a -m \"" + comment + "\"", editor.fileName())
}else{
buildManager.runCommand("git commit " + editor.fileName() + " -m \"" + comment + "\"", editor.fileName())
}
buildManager.runCommand("git push origin \"" + branch +"\"", editor.fileName())
}
}
}
答案3
如果你只需要提交TeXstudio
,并且愿意使用终端或其他外部工具来完成更复杂的事情,这里有一个快速的破解方法来让 git 进入TeXstudio
(基本上是将其伪装成 svn):
1)在首选项中将 SVN 命令更改为本地 git:
2)在您的$HOME/.gitconfig
设置中输入以下别名
[alias]
ci = commit
Check in...
3)现在你可以愉快地从TeXstudio
菜单中提交
这将执行命令
/usr/local/git/bin/git ci -m "my commit message" "/pathtofile..."
4)要访问此功能,请分配键盘快捷键,将其添加到菜单栏,或访问file->svn->check in...
答案4
我遇到过这种情况,由于我没有用户名或密码,这里的脚本在推送时失败了。以防有人遇到同样的问题,以下是解决方案:
git config --global credential.helper cache
然后使用 git 进行推送,它会要求您输入用户名和密码,然后它会将数据保存到您的电脑中,这样您就不必再次输入它们了。
更多信息:https://help.github.com/articles/caching-your-github-password-in-git/