A while ago we moved to BitBucket for the Retrospect Issue Tracker (see Bitbucket here we come). Together with this change, we also converted our SVN repository to a GIT repo and added it as a private repository to the BitBucket project. The big benefit is that issues that are fixed are linked to the actual check-ins. At the beginning of 2015 we introduced the Retrospect Nightly repository (see Nightly GIT Repository). This is a separate repository that contains the most recent Retrospect commits.

And here is where the issues started to occur. The Nightly repository was a small subset of the actual Retrospect repository. It contained only those files that were need for the add-on and all other stuff (like build scripts, test scripts, other private data) was omitted. Because of this, the Nightly repo had to be created using git cherry-pick and that really cause some pain when updates were pushed:

  • They had to be cherry picked from the current release branch (called patch-x.x.x) and commit to the Nightly repo
  • And we had to merge the same changes from the patch branch to the master branch.

That was a lot of work. So this had to change.

So, what is going to change? Well, the Nightly repository is going to be removed. Instead, we are going to introduce a public repository on the main Retrospect Bitbucket page. This repository will only contain the main Retrospect add-on code. All the code that is need for us to create, test and release Retrospect will be moved into a private repository. From that repository we include the public repo as a git submodule. That way, all the changes to Retrospect will be done in the public repository, both on the master branch and the patch-x.x.x branch.

But there is more. If an issue is linked to a commit, users can now see what changed in the code. And in the future, others could fork our repository and create pull-requests for either fixing issues or adding more features. However, there are also two drawbacks:

  • We had to do a git filter-branch and that caused all the commits to change their REFS. So all previously commits that were linked to issues will no longer be valid ones and thus will no longer work.
  • We decided to let the public repository start at Retrospect version 4.0.0 and not go back any further in time. That would have resulted in a too complicated filtering of code history.

But these are drawbacks that we are willing to accept. So very soon, the current nightly repository will be removed (and redirect to the main one) and all who want to have the bleeding edge code can get the code there.