TexStudio / TexMaker 和 Github

TexStudio / TexMaker 和 Github

我想知道是否有人在通过 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 调用是否正确,但它应该可以说明这个想法。

Git pull 命令

对外部程序的简单调用。首次执行脚本时,TXS 将询问您是否信任该脚本来执行外部程序。

Git push 命令

这有点花哨。首先,脚本要求用户提交评论。其次,触发器?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/

相关内容