Skip to content

Instantly share code, notes, and snippets.

@jazlopez
Created October 25, 2016 00:14
Show Gist options
  • Star 4 You must be signed in to star a gist
  • Fork 3 You must be signed in to fork a gist
  • Save jazlopez/3106944230c539ae83d9905d8f76534b to your computer and use it in GitHub Desktop.
Save jazlopez/3106944230c539ae83d9905d8f76534b to your computer and use it in GitHub Desktop.
Git pull inside root crontab
# Git repository may not allow root to pull down updates
# Pull updates where $user is allowed to read/write remote.
# command line:
su -s /bin/sh $user -c 'cd /var/www/html/src && /usr/bin/git pull origin master'
# crontab (by executing sudo opens up root crontab)
sudo crontab -e
# every 1 minute pull changes (if any)
*/1 * * * * su -s /bin/sh $user -c 'cd /var/www/html/src && /usr/bin/git pull origin master'
@FlyCorp
Copy link

FlyCorp commented Apr 27, 2022

Show demais

@jazlopez
Copy link
Author

Sorry I didn't get the context of
your comment. @FlyCorp

@RaulSofia
Copy link

@jazlopez that's brazilian slang for "very cool"

@myalcin81
Copy link

oh finally a smart guy who thinks like me.. thank you bro.

@jazlopez
Copy link
Author

@RaulSofia @myalcin81 thank you folks

@myalcin81
Copy link

myalcin81 commented Oct 6, 2023

I changed it a bit like below;

* * * * * su -s /bin/sh my -c 'cd /mydir && /usr/bin/git fetch --all && /usr/bin/git reset --hard origin/master && /usr/bin/git pull origin master'

It was going to stuck on some changes like if you update a file in local, git pull would be aborted to not overwrite local changes, with the changes I did, now its overwrite, it always pull.

Also there are some tricky issues like if you have a untracked files in your local, it won't be updated. If you overwrite those, you should clean up first:
git clean -d -f .

@jazlopez
Copy link
Author

@myalcin81 thank you for sharing your version.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment