[GTALUG] Crontab versioning

David Collier-Brown davec-b at rogers.com
Fri May 4 09:35:28 EDT 2018


On 04/05/18 09:10 AM, Alex Beamish via talk wrote:
> On Fri, May 4, 2018 at 8:11 AM, Jamon Camisso via talk 
> <talk at gtalug.org <mailto:talk at gtalug.org>> wrote:
>
>     On 2018-05-03 10:44 AM, Alex Beamish via talk wrote:
>     > I'm developing scripts that get run by crontab, so I'm in there
>     making
>     > updates fairly regularly. I would love to be able to document
>     the changes,
>     > so I'm wondering if there a usual and customary technique to version
>     > crontabs?
>

I've used RCS for lots of ad-hoc systems file tracking, and at least 
once replaced crontab with a script that added a check-in after calling 
the real crontab -e.  It could easily do a git commit && git push instead.

--dave


>
>     What are you changing in crontabs so much that you need versioning?
>
>
> I'm developing EDI scripts, and as development progresses, some of the 
> older scripts are being replaced by newer scripts. On occasion, there 
> are times when I need to disable a crontab job while I solve an issue.
>
> Having version control would be a great back-stop, and would also be 
> useful from a historical point of view. (Why did I disable that job 
> last Thursday? Where did the such and such script go?)
>
>     Shouldn't all the logic be in your scripts? Maybe I'm missing
>     something,
>     but it seems like needless complication to me.
>
>
> What to do and how to do it is in the scripts. How often to do it is 
> in the crontab.
>
>
>     > Ideally there would be some sort of hook around 'crontab -e',
>     but failing
>     > that, I'd have the output of 'crontab -l' (run regularly by
>     cron?) go to a
>     > versioned file. Plan B sounds a bit hokey to me.
>     If you do need to version things, you can just chuck a git repo under
>     /var/spool/cron/crontabs and ignore any files there you don't want
>     tracked.
>
>
> Under my system, that directory is owned by root, and I prefer not to 
> version anything as root; the code I'm developing is application code, 
> not system code.
>
> The solution I'm leaning towards is to have a shell script for 
> updating the crontab that would do something like
> 1. pushd $local_crontab_directory
> 2. crontab -e
> 3. crontab -l >crontab.$username
> 4. git diff crontab.$username
>
> If there were changes revealed by the 'git diff', and if I felt they 
> were significant, I could do a git commit, followed by a popd.
>
> Thanks for your questions -- they helped me clarify my understanding 
> of the problem and a possible solution.
>
> -- 
> Alex Beamish
>
> Software Developer / https://ca.linkedin.com/in/alex-beamish-5111ba3
> Speaker Wrangler, Toronto Perlmongers / http://to.pm.org/
> Baritone, Board Member, Toronto Northern Lights, 2013 Champions / 
> www.northernlightschorus.com <http://www.northernlightschorus.com>
> Certified Contest Administrator, Barbershop Harmony Society / 
> www.barbershop.org <http://www.barbershop.org>
>
>
>
> ---
> Talk Mailing List
> talk at gtalug.org
> https://gtalug.org/mailman/listinfo/talk


-- 
David Collier-Brown,         | Always do right. This will gratify
System Programmer and Author | some people and astonish the rest
davecb at spamcop.net           |                      -- Mark Twain

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://gtalug.org/pipermail/talk/attachments/20180504/07a8e3be/attachment.html>


More information about the talk mailing list