当前位置: 首页 > 工具软件 > Bazaar VCS > 使用案例 >

vcs是什么指令

汪博艺
2023-12-01


下载ros2 玩一玩,遇到一个demo的安装用到vcs。

mkdir -p ~/rmf_demos_ws/src
cd ~/rmf_demos_ws
wget https://raw.githubusercontent.com/osrf/rmf_demos/master/rmf_demos.repos
vcs import src < rmf_demos.repos

打开https://raw.githubusercontent.com/osrf/rmf_demos/master/rmf_demos.repos,文件内容如下:

repositories:
  rmf/rmf_core:
    type: git
    url: https://github.com/osrf/rmf_core.git
    version: master
  rmf/rmf_schedule_visualizer:
    type: git
    url: https://github.com/osrf/rmf_schedule_visualizer.git
    version: master
  rmf/traffic_editor:
    type: git
    url: https://github.com/osrf/traffic_editor.git
    version: master
  rmf/rmf_demos:
    type: git
    url: https://github.com/osrf/rmf_demos.git
    version: master

Vcstool是一个命令行工具,旨在使使用多个仓库更加容易

什么是vcstool?

Vcstool是一个版本控制系统(VCS)工具,旨在使使用多个仓库更加容易。

注意:请勿将此工具与vcstools(后缀s)混淆,后者提供用于与不同版本控制系统进行交互的Python API。两者之间最大的区别是:

  • vcstool在文件系统中可用的仓库工作副本旁边不使用任何状态。
  • vcstool export的文件格式使用存储库的相对路径作为YAML中的键,从而避免了设计冲突。
  • 与vcstools包括顶部构建的命令行工具相比,vcstool的代码行明显少得多。

它是如何工作的?

Vcstool可在任何文件夹中递归搜索受支持的存储库。在这些存储库中,vcstool用请求的命令(即diff)调用本机VCS客户端。

支持哪些VCS类型?

Vcstool支持Git,Mercurial,Subversion,Bazaar。

如何使用vcstool?

脚本vcs的使用类似于VCS客户端git,hg等。help命令提供了可用命令的列表以及其他说明:

vcs help

默认情况下,vcstool在当前文件夹下搜索仓库。可以选择传递一个路径(或多个路径)以搜索不同位置的仓库:

vcs status /path/to/several/repos /path/to/other/repos /path/to/single/repo

导出和导入仓库集

Vcstool可以导出和导入复制一组存储库版本所需的所有信息。Vcstool使用简单的YAML格式对该信息进行编码。此格式包括一个根密钥存储库,在该根存储库下,每个本地存储库都由用其相对路径作为键的字典来描述。这些词典中的每一个都包含键类型,URL和版本。

对于一组两个存储库(通过Git克隆的vcstool和通过Subversion检出的rosinstall),结果类似于以下内容:

repositories:
  vcstool:
    type: git
    url: git@github.com:dirk-thomas/vcstool.git
    version: master
  old_tools/rosinstall:
    type: svn
    url: https://github.com/vcstools/rosinstall/trunk
    version: 748

导出仓库集

vcs export命令以YAML格式输出所有仓库的路径,vcs类型,URL和版本信息。通常将结果通过管道输到文件:

vcs export > my.repos

如果仓库当前位于分支的顶端,则遵循该分支。这意味着如果分支在此期间已发展,则以后的导入可能会获取较新的修订版。此外,如果本地分支已从远程仓库演变而来,则导入可能不会导致完全相同的状态。

要确保将确切的修订版本存储在导出的数据中,请使用命令行参数--exact。由于特定的修订版既不与分支机构无关,也不与远程对象(对于Git和Mercurial)无关,因此该工具将检查当前的哈希值是否存在于任何远程对象中。如果它存在多个,则在远程originupstream按字母顺序在其他任何远程站点之前考虑。

导入仓库集

vcs import命令克隆所有通过stdinYAML格式传递的仓库。通常,以前导出的文件的数据通过管道传递到:

vcs import < my.repos

import命令还支持rosinstall文件格式的输入。

仅对于此命令,vcstool支持伪客户端tarzip,它们从URL提取tarball /zip文件并解压缩其内容。对于这两种类型,版本密钥是可选的。如果指定,则仅从归档中提取由版本值指定的子文件夹中的条目。

验证仓库文件

vcs validate命令获取一个YAML文件,该文件通过stdin传入并验证其内容和格式。先前导出的文件或手工生成的文件的数据通过管道传递到:

vcs validate < my.repos

validate命令还支持rosinstall文件格式的输入。

如何安装vcstool?

在基于Debian的平台上,推荐的方法是安装软件包python3-vcstool。在Ubuntu上,这是使用apt-get完成的:

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
 类似资料: