Hi all, The move to GitHub is now complete. Yay!
https://github.com/atmtools/arts/ In this mail I'll summarise the most important changes in the development workflow. 1 - Better tracking of changes With Subversion, being a centralised version control system, every commit had to be done right on the server. In the past, this often led to the point where larger changes resulted in huge commits that touched many files. A finer granularity in commits makes it easier for other developers to follow what's going on. It can also help to better track down problems to a specific change causing them. Git is decentralised. You develop in your own fork ("copy") of the repository. You can commit your changes more often and thus keep better track of your changes before they end up in the "live" version. After merging these finer-grained commits will be retained in the main repository, making it easier for other developers to follow your changes. If you're working on different things simultaneously, branches enable you to keep these things physically separate, giving you the opportunity to commit them when they're ready. Information on how to work with git can be found in this document: https://github.com/atmtools/arts/blob/master/CONTRIBUTING.md 2 - Code Review Another common practice we'd like to adapt is code review. Having another pair of eyes look at the code increases the chance of spotting potential problems as early as possible. In GitHub this is done via pull requests. Once you're done with your current work, instead of merging your changes directly into the main repository, you open a pull request. A maintainer (currently Simon and I), will have a look at your changes, request changes if any problems are spotted and then merge your branch into the main repository. 3 - No more ChangeLog _file_ The ChangeLog file has been removed for several reasons: - It is duplicating the information available via the log history of the version control system (either 'svn log' or 'git log'). - It can lie or not tell the whole truth. If you want to see which files changed in a particular commit, looking at the ChangeLog file might only give you part of that information. The committer could have forgotten to list _all_ the changed files. The version control system know exactly which files have changed 'git log --stat'. - It creates a singular point of merge conflicts when working with branches. 4 - But... what about the ARTS version number? - It now lives in its own file 'VERSION' in the top level ARTS directory. - The way we used it also duplicated functionality already provided by the version control system (the commit hash in git, or the revision id in Subversion). - The version will only be incremented by the maintainers in the master repository. Either when new major new features have been added, the user interfaces changed (e.g. changed WSM interfaces). But never in developer branches. 5 - Code format, not git related but I'll mention it here anyway Over the years, coding style has "evolved" into very different styles for different files in ARTS. After looking at different widely used styles, Simon and I decided to go with the Google Coding Style. With clang-format being available as a great tool for automatically applying a style to the code (not only indentation, but also consistent in-code whitespace), this is a great opportunity to bring back consistent formatting to ARTS. I'll send out a separate mail with more information on plans how to apply the new format to all ARTS code. I think that's all for now. As with every switch to a new system, I expect there to be some rough edges that we have to work out. Questions or comments are always welcome. Best wishes and have a great weekend, Oliver _______________________________________________ arts_dev.mi mailing list arts_dev.mi@lists.uni-hamburg.de https://mailman.rrz.uni-hamburg.de/mailman/listinfo/arts_dev.mi