On Thu, May 1, 2014 at 3:24 AM, Tully Foote <tfoote@osrfoundation.org> wrote:
For 3rdparty package maintainers looking to port a patched package forward to a new rosdistro here's what William did to port BFL forward into indigo from hydro. 

Tully

On Thu, May 1, 2014 at 1:04 AM, Michael Ferguson <mfergs7@gmail.com> wrote:
Wow! Easy indeed!

Thanks for going ahead and cranking that out -- I would have never figured that out. I agree, copying that to the mailing list would probably be helpful to anyone who ends up maintaining one of these kind of packages down the road.

-Fergs


On Thu, May 1, 2014 at 1:01 AM, William Woodall <wjwwood@gmail.com> wrote:
I went ahead and did it, this is what I did:

$ cd bfl-release
$ git checkout master
$ cp -r hydro indigo
$ git add indigo
$ git commit -m "create indigo patch folder with indigo package.xml template"
$ git-bloom-config copy hydro indigo
$ git-bloom-config edit indigo
... change settings for indigo
... change rosdistro to indigo
... change patches directory to indigo
$ bloom-release -r indigo -t indigo bfl
... give it the release repo: https://github.com/ros-gbp/bfl-release.git
... push with force if needed for tags
... push changes but don't open pull request
$ cd ..
$ rm -rf bfl-release
$ cd bfl-release
$ python -c "from bloom.git import track_branches; track_branches()"
... This tracks all remote branches locally
$ git branch
... go to each indigo patch branch and copy over any patches from the hydro equivalents
... probably just need patches/release/.../bfl and patches/debian/.../bfl
... for instance:
$ git ls-tree --name-only -r patches/release/hydro/bfl | grep '\.patch' | xargs -I {} sh -c 'git show patches/release/hydro/bfl:"$1" > "$1"' -- {}
$ git add ./*.patch
$ git commit -m "migrating patches from hydro"
$ git push origin patches/release/indigo/bfl
... Once you have migrated any patches you need, bloom-release and pull request
$ bloom-release -r indigo -t indigo bfl
... give it the release repo: https://github.com/ros-gbp/bfl-release.git


And "it's that easy"! :)

Unfortunately this is pretty tedious and error prone and not well documented, but it should only affect a handful of cases and I've often considered a tool to help with this, but always shied away from it because I think the cost out weighs the benefit.

We can copy this to ros-release as well.


Thanks for posting. I can follow the first half reasonably well. But, after erasing the local clone and creating it again, I have no idea why to do that or what is going on.

I need to do something similar for libfreenect. I don't think I can follow William's example well enough for it to work. I expect I could easily destroy that release repository. 

I guess my only other option is recreating all the patches by hand. Any other suggestions?
-- 
 joq