The following line in setupbase.py was the problem. It assumes
that your CWD is always at the repository root. This patch removes
this assumption.
execfile(pjoin('IPython','core','release.py'), globals())
`setup.py anything` will halt with an informative error
if the submodules are unclean.
It will fetch the submodules if they are entirely absent.
Nothing will happen if it is not a git repo.
A much less intrusive version of #3274 that has effect on checkout / pull / merge,
rather than setup.py. It does require a user install step,
because you cannot add active hooks to a repo.
Add autosaving to the notebook, while retaining manual checkpoint creation.
Autosave will perodically save the notebook, with a default interval of two minutes. This interval is configurable, and the system will automatically back off the frequency if it detects that the save operation takes too long. This can be the case if working remotely over a slow link, so this will automatically conserve bandwidth.
The manual save operation remains available and bound to the same keys, but now it causes the creation of a separate checkpoint, which is stored in a hidden directory called `.ipynb_checkpoints`. This provides users a poor-man's version control with a single revert point and the ability to safely experiment with potentially destructive changes to a notebook without concern that the autosave operation may clobber their file on disk.
See [IPEP 15](https://github.com/ipython/ipython/wiki/IPEP-15%3A-Autosaving-the-IPython-Notebook) for details of the proposal.
autosave interval is tuned based on the duration of saves.
Autosave will never happen more frequently than every 30 seconds,
and if saves take more than 3 seconds, autosave will fire every 10x the duration of the save (i.e. if save takes 6 seconds, it will be every 60 seconds, etc.)