As I'm now using git for version control of my latex documents that I am writing I have automated the committing to git. This is the script that I'm using, called gitcron -

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
#!/bin/bash
# from http://superuser.com/questions/629898/how-to-auto-commit-to-my-git-repository-using-cron
# 29-09-14
logfile="/home/$USER/logs/gitcron.txt"

exec > >(tee -a $logfile) 2>&1;

cd /home/$USER/research/obnam/ 
/usr/bin/git add -A 
/usr/bin/git commit -am "update `date`"
# /usr/bin/git push

cd /home/$USER/research/beeb/ 
/usr/bin/git add -A 
/usr/bin/git commit -am "update `date`"
# /usr/bin/git push

This is saved to /home/$USER/bin and run from this cron-line -

00 */3 * * * DISPLAY=:0 /home/$USER/bin/gitcron

And this is the .gitignore that stops some files from being committed.

# created 27-09-14

ob2014.acn
ob2014.acr
ob2014.alg
ob2014.aux
ob2014.bcf
ob2014.blg
ob2014.glg
ob2014.glo
ob2014.gls
ob2014.idx
ob2014.ilg
ob2014.ind
ob2014.ist
ob2014.out
ob2014.run.xml
ob2014.toc
*.aux

What this does is that every three hours it checks all the files of beeb or obnam and if it finds any changes that should be committed, and are not in .gitignore then they will be committed and an email sent to me showing what it has done. And this email looks like this -

From: root@london (Cron Daemon)
Subject: Cron <$USER@london> DISPLAY=:0 /home/$USER/bin/gitcron  
To: $USER@localhost
Date: Fri, 03 Oct 2014 12:00:08 +0100 (1 day, 2 hours, 36 minutes ago)

[devel 64f2dfc] update Fri  3 Oct 12:00:03 BST 2014
 6 files changed, 181 insertions(+), 160 deletions(-)
On branch devel
nothing to commit, working directory clean

This shows that there were 6 changed files and committed in /home/$USER/research/obnam, and there is nothing to commit in /home/$USER/research/beeb. This simplifies things if I forget to manually commit stuff by doing it all for me, and it could be run once a day if you wanted, just change its frequency in your crontab.



Comments

comments powered by Disqus