Ask Your Question

Managing internal ros project through GIT

asked 2018-01-30 09:34:38 -0600

AC3021 gravatar image

I am setting up a robotics project within my company, and will have 10+ people working on the project. Since its still in the early stages I want to get some version control system underway. Our company uses BitBucket so was going to use that.

My question: Is it possible to download all the ROS files needed that one normally builds ROS with, host it on a private repo, and then myself and team members can add/modify our own packages. The reason for hosting everything in one spot is for new team members to come to our repo and download everything in one place. Once we get the system running, and hide any company specific intellectual property (dont want to run into any company legal issues) we plan on publishing it publicly.

edit retag flag offensive close merge delete

1 Answer

Sort by » oldest newest most voted

answered 2018-01-30 10:23:59 -0600

gvdhoorn gravatar image

updated 2018-01-30 10:57:45 -0600

It's probably possible, but seems a bit unnecessary (and somewhat infeasible: how are you going to manage tracking upstream?).

ROS has various tools for managing source checkouts, such as vcstool, wstool and rosinstall_generator.

For binary management and installation -- of both ROS package dependencies as well as system dependencies -- rosdep is used (#q215059).

Setting up a source workspace from a given my_awesome_ros_application.rosinstall file (which only contains references to source repositories of your own packages or forks of upstream packages) is a matter of:

# init only needed once, update regularly
$ sudo rosdep init && rosdep update
$ source /opt/ros/$distro/setup.bash

# create and populate workspace (done once)
$ mkdir $HOME/catkin_ws && cd $HOME/catkin_ws
$ wstool init -j8 $HOME/catkin_ws/src http://location/of/your/my_awesome_ros_application.rosinstall
$ rosdep install -y --from-paths $HOME/catkin_ws/src --ignore-src -y

At this point you'll have your entire system setup to start developing on the packages. Change management can be done per repo, or when using vcstool per workspace.

My suggestion would be to store only the source repositories of your own packages (not the entire catkin_ws, #q264600), and deploy dependencies from the binary repositories as much as possible. Using released binaries is preferable in any case, unless:

  1. there are no binaries available (because the pkg has not been released, in general, for your platform / cpu arch, or a particular version is no longer / not yet available)
  2. you need a source checkout as you want to work on the actual pkg itself
  3. you deploy to systems that absolutely cannot use released binaries
  4. you must absolutely guarantee reproducable builds and need a source snapshot of all your dependencies (and their dependencies, etc)
edit flag offensive delete link more


Note that you don't even need a full ROS install before starting the workspace setup process. With just the first steps of the installation tutorial (up to and including section 1.3) you can already do this. Provided all your pkgs declare their dependencies correctly, rosdep will install ..

gvdhoorn gravatar imagegvdhoorn ( 2018-01-30 10:37:11 -0600 )edit

.. everything for you.

(you do need to install vcstool/wstool and rosdep of course)

gvdhoorn gravatar imagegvdhoorn ( 2018-01-30 10:37:33 -0600 )edit

Your Answer

Please start posting anonymously - your entry will be published after you log in or create a new account.

Add Answer

Question Tools

1 follower


Asked: 2018-01-30 09:34:38 -0600

Seen: 80 times

Last updated: Jan 30 '18