Some errors can be very annoying sometimes if they come back again and again. Here is one of them: TortoiseGit locks repository folders so that the user can't delete them which I throught was caused by Jenkins. So annoying that it was mentioned in a couple of issues 401, 497, 1880. I could avoid using TortoiseGit but that's the only git GUI I don't have to remember the usage.
So let's tweak the TortoiseGit's Settings even if some changes seem to fix it:
TGitCache now checks file sizes before checking file contents. This should mitigate possible "file is locked" problems. TGitCache now does not check the contents of files with filesize > 10 MiB any more and falls back to checking the timestamp of the files (as if TGitCacheCheckContent is set to "false") according the the git index. This limit can be changed by adjusting TGitCacheCheckContentMaxSize (measured in KiB) in TortoiseGit advanced settings. The reason for this change is that libgit2 reads a file to memory for hashing and, thus, locking the file and the repository for this time span.
A couple of tricks:
Jenkins is an interesting tools. You can schedule jobs, manage dependencies between or even display pipelines. Below follows the one I use for my teachings which consists in many helpers to generate documentation, proposes various magic commands for ipython, test all notebooks are working fine.
For the past two months, I updated many times my website. I automated many things but it still takes a while. And my laptop needs to remain opens until it completes. I finally took the decision to spend some time on Jenkins. I use it to compile the documentation of my python modules, to run the unit tests, and maybe publish it to my website. Basically, you can run a command line batch by just clicking and receive an email when it is over or if it has failed. One interesting feature is the possibility to chain the commands. If the commands n succeeds, go to command n+1. You can connect it to GitHub or any source repository. It will update your clone just before building.
It takes less than an hour to install Jenkins, install the necessary plugins and creates the first job. I had difficulties because I was running my python script from a batch command file. The script was not stopping even after Python raised an exception. To do that, the following line must be inserted:
%pythonexe% -u setup.py unittests if %errorlevel% neq 0 exit /b %errorlevel%
Jenkins is more than a scheduler, it handles security, it can run a script on a different machine.