MoveIt! Merge - Migration Notes
In an effort to reduce the friction in maintaining and improving the MoveIt! code base, we are planning on consolidating 8 of our current Github repositories into one master repo. The rational for this has been discussed on Discourse. We are targeting this consolidation for 7am Pacific, Friday August 5th (subject to be pushed back if necessary) when these repos will be fully deprecated and all code changes / PRs should be created or moved to the new consolidated repo.
In this repository we describe the planned merging process, and also provide a script that automates the merge process to maintain the best consistency between old and new repos.
Repositories to be merged
All of the git history and the current three supported branches (indigo|jade|kinetic) will be migrated to the single repo https://github.com/ros-planning/moveit for the following repos:
Developers: HOW YOU CAN HELP US
- Sync / rebase your individual forks now to the current (soon to be deprecated) repos. This way you will have fewer potential conflicts the day we switch over
- Change over to the unified repo the same day/week that we do to reduce future conflicts
- Close out all open pull requests in the old repo now. Avoid opening new complex PRs that might take a while to get merged in.
- Review these migration notes and leave feedback on Discourse.
In order to preserve the appearance of file histories in Github, we are using the
git filter-branch method to re-write the git histories of all past commits so that they appear to have always existed in their new subfolder. The downside of this approach is that all commit hashes will change (because each commit was rewritten to have all content in a subfolder). The automated merge script written by @wjwwood and @davetcoleman can be found here.
Many MoveIt! users likely have their own forks with modifications living in their code bases - we want to encourage those users to make the migration with us to a unified repo. To make this easy for developers, we've maintained the old repo folder / package structure so that you can in theory just copy a folder over into the new git repo and do a
commit. Before making the copy though we recommend you
rebase your old repo to the latest changes on the parent deprecated repository. This way there will the a minimum number of potential conflicts you have to sort through when syncing with the new merged
In the future we are interested in flattening out some of the subfolders - i.e. "moveit/moveit_ros/planning" could become "moveit/moveit_ros_planning" since this better represents the package name. But this is not part of the initial migration.
Note: will the first person who uses patch sets to migrate old pull requests to the new repo please document it here. If you come up with other methods for migrating besides copying your package, please share here also.
We would like to start opening all new issues on the new repo, and old ones should be copied there as well. This will be one of the objectives of World MoveIt! Day.
Future releasing of indgo|jade|kinetic will be made from the new unified repo https://github.com/ros-planning/moveit. Necessary steps after the merge:
rosdistrofiles to remove merged packages. The new
moveitpackage can be added via bloom thus there is no need to add it manually.
- Create a release repository (preferrably
https://github.com/ros-gbp/moveit-releaseto maintain consistency).
- Make a new release by following Releasing a Package for the First Time.
- Before the public sync of debs, call for testing from shadow-fixed repo.
Previously MoveIt! had a metapackage called
moveit_full in Indigo and earlier. After the repo consolidation this package will be instead called simply
moveit to match the new repo name. Several new packages will be added to this metapackage, based on what is in the merged repo. In Indigo
moveit_full will remain unchanged for backwards compatibility, but a second metapackage
moveit will also exist.
We will not be migrating the old git tags / releases to the unified repo due to the difficulty of doing so. See also "Old Repositories". The version number tag for the new repo will be decided among maintainers, based on the packages in the old repos.
The old repos will remain in existence at least until support for the Indigo LTS ends May 2021. Prominent notes will be made in their READMEs that they are deprecated.
Large Dependency Chains
For systems that, for example, do not need visualization components we recommend disabling various packages from being built on your platform. There are several ways to do this with catkin:
etc for whatever packages you need to ignore
If you use catkin_tools:
catkin config --blacklist moveit_ros_visualization
rm -rf moveit/moveit_ros/visualization
And add to your .gitignore the notice to ignore the deletion.