On behalf of Sahana community, I’m happy to announce that we finished the migration of Sahana Vesuvius from Launchpad to GitHub. All the code and bugs have been successfully transferred with the complete commit history. We can now profit from the best platform out there and use Git, the fastest revision control system. This is something that we have been planning to do for some time. It took us a while to get the green lights from the PMC and work on some technicalities. We hope you’ll find GitHubfaster and easier to use than Launchpad. GitHub has more than a million users and will make the project more visible and ease external contributions.
What is Sahana?
For those who have not heard about Sahana, please take a look at our Wiki and also you might find history of Sahana interesting as well. In a nutshell, Sahana was a product of collaborative development effort of the ICT community in Sri Lanka to help the country recover from the deadliest Tsunami disaster in 2004 that was caused by an Indian Ocean earthquake. In early 2009, Sahana spin-off to its own organization thus, Sahana Software Foundation was formed as a non-profit organization registered in the State of California. The Sahana Software Foundation is dedicated to the mission of saving lives by providing information management solutions that enable organizations and communities to better prepare for and respond to disasters.
Why we moved to GitHub?
We want to give our developers an excellent user experience. GitHub is super fast and very popular so most developers won’t need to create a new login to contribute. Since most developers are familiar with git, it will be easy for new developers who are looking to contribute to Sahana Vesuvius to get started. Also we wanted to bring all our projects together under one roof. Sahana Eden, which is another umbrella project of Sahana Software Foundation, was moved to GitHub in early 2012. With this migration, it will be easier for us to manage the development of both of these projects.
Developer Notes
We used lp2gh script library to perform the migration so the history is entirely kept. We also moved all our bugs using lp2gh script. We are still working on the details. If you see something wrong or missing on GitHub, please contact us or create an issue on GitHub. If you had some branches on Launchpad, you can find them on the GitHub repository. Let us know if you have questions. Contributors simply fork the repository and get started. More information about this transition, resources and instructions for developers to migrate to Git are available on the Developer Workflow page on the Github Wiki.
Migrating existing Branches from Launchpad
We have identified following Launchpad individual branches that are of interest to migrate.
Therefore, I have already moved them to GitHub as separate branches under my fork of sahana/vesuvius in here. If your individual branch is not listed here (don’t get mad at us!), please read this guideline to migrate that to GitHub. But please make sure that your commit history is entirely kept with valid email addresses attached. One of the big issues that we ran into was that some commits were not linked with valid email addresses.
- This will list down all commits that are not associated with a valid email address.
$ git shortlog -es|sort -rn |grep -Ev "@.+\."
If your branch is listed above and you want to quickly get on with continuing your development work on GitHub, following is a brief guideline.
- Go to https://github.com/sahana/vesuvius and fork the Sahana Vesuvius project.
- Get a local copy of the forked repository.
$ git clone git@github.com:<your_name>/vesuvius
- Move into local repository directory
$ cd vesuvius
- Import your branches to local repository. This will import <export_branch_name> as <branch_name> in your repository. Repeat this for each branch that you wish to import.
$ git fetch http://github.com/ravihansa3000/vesuvius <export_branch_name>:<branch_name>
- Push all your local branches to your GitHub fork.
$ git push -a origin
- Now you can work on any of those branches by doing:
$ git checkout <branch_name>
- And later pushing back to GitHub by:
$ git push origin <branch_name>
- You can add official Sahana Vesuvius master branch as a remote tracking branch
$ git remote add --track master vesuvius git://github.com/sahana/vesuvius
The above step isn’t absolutely necessary, but you will find it very useful if you plan on working on this project in the long run. By adding Sahana Vesuvius master branch as a remote tracking branch, you will be able to get new updates into your branch.
- To get new updates:
$ git fetch vesuvius
- To merge it into your own project:
$ git merge vesuvius/master
Acknowledgements
- Many thanks to Chamindra de Silva and Usman Akeju for their help.
- Huge shout out to Ramindu Deshapriya for making this task possible!