为什么会去了解
vcstool
,在想要手动编译并且获取ROS
源码的时候,有一个Get ROS 2 code的章节中使用到了这个工具。
mkdir -p ~/ros2_foxy/src
cd ~/ros2_foxy
wget https://raw.githubusercontent.com/ros2/ros2/foxy/ros2.repos
vcs import src < ros2.repos
vcstool
用于维护来自多个版本控制系统的项目工作区的命令行工具。
vcstool 提供了基于单个工作区定义文件(.repos 或 .rosinstall)来管理多个本地 SCM 存储库(支持 git、mercurial、subversion、bazaar)的命令。
vcstool 替换wstool。与 wstool 相比,它在文件系统中存储库的工作目录旁边没有任何状态。
为了与rosinstall_generator兼容,可以读取 .rosinstall 文件。vcs export
生成的 .repos 文件的文件格式提供了更严格的保证(例如,所有条目在获取它们时都是无冲突的)。
安装
对于在Debian的平台
sudo apt install python3-vcstool
或者
sudo pip install -U vcstool
在Ubuntu平台
sudo sh -c 'echo "deb http://packages.ros.org/ros/ubuntu $(lsb_release -sc) main" > /etc/apt/sources.list.d/ros-latest.list'
sudo apt-key adv --keyserver hkp://pool.sks-keyservers.net --recv-key 0xAB17C654
sudo apt-get update
sudo apt-get install python3-vcstool
使用
脚本vcs的使用类似于VCS客户端git,hg等。help命令提供了可用命令的列表以及其他说明:
vcs help
导出仓库集
vcs export
可以把当前工作空间以YAML
格式输出所有仓库的路径,vcs类型,URL和版本信息。
vcs export > my.repos
导入仓库集
mkdir -p ~/ws/src
cd ~/ws
vcs import src < PATH_TO_ROSINSTALL_FILE.rosinstall #从`.repos`或者`.rosinstall`填充文件到工作区
vcs pull #更新文件
验证仓库文件
vcs validate
命令获取一个YAML
文件,该文件通过stdin
传入并验证其内容和格式。先前导出的文件或手工生成的文件的数据通过管道传递到:
vcs validate < my.repos
validate
命令还支持rosinstall
文件格式的输入。
总之就是,这个工具很适合管理多个仓库相互依赖的工作空间,例如ROS2的工作空间管理就是使用这个工具。