10

Following up on Easy LaTeX Editor with SVN or GIT connection and auto-update, I am trying to set up a way to automatically commit my latest changes with the current date and time (e.g. -m "autosave on YYYY-MM-DD_hh:mm") to a git repository using TeXstudio (on Windows).

Using the "Automatically check in after save" feature (see image below) has the following disadvantages:

  • Cluttering of the repository (maybe to a lesser extent by saving less often); however, I am aware this is part of the functionality and can hardly be avoided
  • The function only commits the file you just saved (even worse, simply adds the current file name to the svn/git command).
    If another file was modified (which happens quite a lot if the generated PDF is part of the repository), git won't commit the changes.
    Modifying the built-in svn command to something like git -a (commit all modified files) fails since a file name is appended to the command, which gitdoesn't allow.
    To clarify, the full command executed looks like this:
    git -m "my commit message" currentfile.tex
    I have not yet found a way to not append the file name.
  • The built-in use of the % sign makes it impossible (on a Windows machine, at least) to add system variables such as %date%to the commit message

I am not dead-set on using the autosave feature; it would suffice to add a custom command to the standard compilation process.

TexStudio SVN autosave feature

  • I am using a git alias for my log output (l = log --graph --pretty=format:'%C(red)%h%Creset%C(green)%d%Creset %C(white dim)%s%Creset %C(white)%an, %ar%Creset', so I immediately see the date my commit was done. Maybe - instead of forcing the commit message - you could use something like this, making your life a bit easier :) – Habi Aug 14 '15 at 7:39
8

I found a solution to this problem with the following steps:

  1. Create a batch file in the directory of your main *.tex file
  2. Open the batch file and add the following line: git commit -am "autosave %date%-%time:~0,8%". This will commit all changes made (-a switch) and set the commit message to e.g. autosave 2015-08-17-09:34:05
  3. Add a custom command in TeXstudio that executes your batch script (see image below for an example) add custom TeXstudio command
  4. Add your custom command to the list of commands for compilation add custom command to compilation
  5. After the next compilation of the document, the following message will appear in the message log: commit log message
  6. Additionally, the batch file could be modified accordingly to push the changes directly to the remote repository via git push
4

Try to work with git as described here - citated:

Use git instead of svn. So you have to change the commands for using git via svn-commands at Options->Configure TeXstudio → Commands → SVN and SVNADMIN to git.

enter image description here

Then open bash and tell git to use the command ci:

git config --global alias.ci "commit"

enter image description here

There you go. Now you can enable auto-commit at Options → Configure TeXstudio → SVN.

Be advised that these automatic checkins will clutter your repository. It may be a good idea to switch to a different branch before working with TeXstudio and pick/squash the changes to the master branch after you are done.

  • I did it but when I try to use it I get this error: "fatal: Not a git repository (or any of the parent directories): .git" – skan Nov 28 '16 at 1:28
  • works like a charm! @skan did you init a git repository first? – Philippe Dec 7 '16 at 1:20
  • from TexStudio or from the command line? – skan Dec 7 '16 at 12:48
  • It works fine, but has the small disadvantage that you have to make sure to add all files to git (git add . ) - otherwise new files you add to your tex project won't be kept under version control. – LeBird Oct 5 '17 at 9:39

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.