ROS Resources: Documentation | Support | Discussion Forum | Index | Service Status | ros @ Robotics Stack Exchange
Ask Your Question

Contributing packages split across multiple Git repositories

asked 2012-04-17 06:11:23 -0600

mkoval gravatar image

I've written quite a few nodes for a custom robot that I've been working on. Several of these nodes are general purpose hardware drivers that would be useful to the larger ROS community. I have been using Git for version control and have a separate repository for each package for several reasons (e.g. to keep separate commit histories, to have more granular control of push access).

This leaves me confused as for how to get these packages listed with Wiki pages on Most of the documentation assumes that each person or organization uses one large repository (e.g. "umd-ros-pkg"). One option I was considering was to make an overarching GIt repository that contains the other packages as submodules. What is the preferred method of dealing with this situation?

edit retag flag offensive close merge delete

2 Answers

Sort by ยป oldest newest most voted

answered 2012-04-17 06:24:29 -0600

Eric Perko gravatar image

You can just provide a link to a rosinstall file with the package names and repositories you would like indexed. It's more flexible and also allows you to easily add more stacks later - all you have to do is update your rosinstall file and the indexer will pick up your new stacks next time it reads that file.

See this mailing list thread for some details:

edit flag offensive delete link more


This sounds like what I am looking for. However, I am still unclear on a few points: (1) Do I put the rosinstall file in a separate repository? (2) How do I get the indexer to find my rosinstall file? (3) Must the repos listed in the rosinstall file contain stacks (i.e. not a single package)?

mkoval gravatar image mkoval  ( 2012-04-17 19:12:24 -0600 )edit

(1) You don't need to. The indexer just needs to know a URL for downloading it. (2) Write an email to the ros-users mailing list with your repository announcement and URL to your rosinstall file. (3) They should. Note: ROS now supports unary stacks:

Lorenz gravatar image Lorenz  ( 2012-04-17 23:18:59 -0600 )edit

Thanks for including a link to the REP for unary stacks. I completely missed that addition.

mkoval gravatar image mkoval  ( 2012-04-18 08:06:46 -0600 )edit

answered 2012-04-17 12:54:13 -0600

joq gravatar image

As Eric mentioned, you are free to have as many repositories as you want.

Since the stack is the unit of release and installation in ROS, I recommend that you consider collecting some of the more tightly-coupled packages into stacks.

  • Advantages: no problems with version dependencies within a stack.

  • Disadvantage: all the packages for each stack would need to be combined into a single git repository.

edit flag offensive delete link more


I am using a stack for robot-specific code, but I don't think it makes sense for most of the hardware drivers. For example, it doesn't make sense for a general purpose motor controller driver and a digital compass driver to be versioned together...even if they happen to be on the same robot.

mkoval gravatar image mkoval  ( 2012-04-17 19:14:40 -0600 )edit

Agreed. Many ROS hardware drivers are packaged as unary stacks for just that reason. They have have both a stack.xml and a manifest.xml and can be released and installed separately.

joq gravatar image joq  ( 2012-04-18 04:11:22 -0600 )edit

Awesome! I completely missed the addition of unary stacks. That is exactly what I am looking for.

mkoval gravatar image mkoval  ( 2012-04-18 06:24:49 -0600 )edit

Question Tools

1 follower


Asked: 2012-04-17 06:11:23 -0600

Seen: 543 times

Last updated: Apr 17 '12