快速开始

本指南可帮助快速轻松地开始使用 VisionByte 分布式版本控制系统。

安装

查看 VisionByte 是否安装成功:

$ vb version
VisionByte Version 2.24 [8be0372c10] 2024-04-23 13:25:26 UTC
Copyright (C) Softbridge Technology (Shenzhen) Co., Ltd. All rights reserved.

常规流程

VisionByte 使用仓库(通常名为 FILENAME.vbyte ,是包含项目完整历史记录的单个数据库文件)和工作副本(用于完成工作的目录,由程序从仓库中提取出当前项目的快照)对项目进行控制管理。其基本工作流程如下:

  • 创建或克隆一个仓库文件 ( init 或者 clone

  • 为本地仓库创建或打开其工作副本 ( open

  • 对仓库执行操作(包括仓库配置)

开始新项目

要使用 VisionByte 启动一个全新的项目 ,可以使用以下方式创建一个新的空仓库:

vb init PATH

示例

  • 创建一个 demo.vbyte 的新仓库:

$ vb init demo.vbyte
project-id: 37402e85e64ea0523190e008faef5b8f3fd0a578
server-id:  80d3335c34c4266e3e9f0024e31b14aad802d3e7
admin-user: Administrator (initial password is "JgjKZ3Bz97")

可以为新仓库随意命名,也可以将其放置在文件系统的任何位置。默认情况下,仓库管理员为当前登录名,仓库地址为命令行所在文件系统位置。

关于新建仓库的其他设置,可以参考 init 命令。

克隆 远程仓库:

vb clone URI PATH

大多数 vb 操作都与本地磁盘驱动器上的仓库交互,而不是与远程系统上的仓库交互。 因此,在访问远程仓库之前,可以先克隆远程仓库的本地副本。该操作称为 clone

示例

  • 克隆远程仓库 https://visionbyte-scm.org/project.vbyte

vb clone https://visionbyte-scm.org/project.vbyte
# Round-trips: 8   Artifacts sent: 0  received: 39421
# Clone done, sent: 2424  received: 42965725  ip: 10.10.10.0
# Rebuilding repository meta-data...
# 100% complete...
#...

如果远程仓库需要用户权限,请在 URL 中包含用户 ID,在系统下提示输入密码:

vb open https://username@code.softbridge.com/projectz
# C:\Users\36657\Documents\VisionByte\vb.exe clone "https://username@code.softbridge.com/projectz" C:/Users/36657/Desktop/open/projectz.vbyte
# password for https://username@code.softbridge.com/projectz: **************
# remember password (Y/n)? y
# Round-trips: 3   Artifacts sent: 0  received: 2692
# ...
#   100.0% complete...
#...

关于克隆仓库的其他设置可以参考 clone 命令。

工作副本

要在 VisionByte 系统中对项目进行开发,首先要从本地仓库签出源树的本地副本,创建该项目的工作副本,再在工作副本中对项目进行开发,并通过 vb 进行版本控制管理。

vb open  REPOSITORY --workdir DIR

在指定的 DIR 目录下为 REPOSITORY 仓库创建工作副本;若 DIR 目录不存在,则该命令会自动创建该目录;若省略 --workdir DIR 选项,则工作副本位于终端所在文件系统位置。

示例

  • 创建工作副本,为 demo.vbyte 仓库创建工作副本 project

$ vb open --nested --workdir project demo.vbyte
SQLITE_NOTICE(27): delayed 25ms for lock/sharing conflict at line 52099
SQL: INSERT OR IGNORE INTO global_config(name,value)VALUES('repo:C:/Users/Administrator/Desktop/jenkins_home/workspace/VisionByte/Document/projectz/source/test/quickstart/open_tree/demo.vbyte',1);
project-name: <unnamed>
repository:   C:/Users/Administrator/Desktop/jenkins_home/workspace/VisionByte/Document/projectz/source/test/quickstart/open_tree/demo.vbyte
local-root:   C:/Users/Administrator/Desktop/jenkins_home/workspace/VisionByte/Document/projectz/source/test/quickstart/open_tree/project/
config-db:    C:\Users\Administrator\AppData\Local//SOFTBRIDGE//__vbglobal__
project-code: 2adf4c68f15ac66b147f51c22fc6a5420aa17641
checkout:     c5383786897714cd199b613a97e8393f44ac7d72 2024-11-25 20:15:58 UTC
tags:         trunk
comment:      initial empty check-in (user: Administrator)
check-ins:    1

基本操作

更改

项目的工作副本创建成功后,可以在工作副本上对项目进行开发,完成对项目的一系列操作后,需要将这些操作添加到当前签出上,以便于下一次提交到仓库:

示例

增加新文件

$ vb add README.md
ADDED  README.md

删除现有文件 (实际上是忽略该文件,即使从将来的签入中删除文件,这些文件仍会继续存在于历史签入中):

$ vb rm test.txt
DELETED test.txt

使新增文件版本化,删除文件未版本化

$ vb addremove
ADDED  README.md
added 1 files, deleted 0 files

提交

所有更改完成后,需要将更改内容 提交 到本地仓库:

vb commit|ci -m "注释" [PATH...]

该命令对进行更改操作的文件进行提交,无论工作副本是否有此文件,此次提交就是最新版本。

使用 -m 在命令行中添加本次提交的注释,若不使用,则系统会打开文件提示您输入注释。

PATH... 是想要提交的文件的相对路径。如果省略该选项 ,则默认对整个项目进行提交。

示例

$ vb ci -m "add README.md and delete test.txt"
New_Version: bc2ee8d6ecd6ab3f325037e03f0c25fe9d9a1fad60d0b255a15bc6edfd360815

关于 commit 命令其他设置可以参考 commit (ci) 命令。

备注

VisionByte 默认为 自动同步模式,这是一种单阶段提交,会将提交到本地仓库的所有更改立即发送到远程仓库。但这仅在对远程仓库具有写入权限时才有效。

更新

对本地仓库和工作副本进行 更新 操作:

vb update VERSION

VERSION` 可以是分支或标签的名称,也可以是特定签入的版本,也可以是日期或者时间戳。如果省略该选项 ,则 VisionByte 会将本地仓库更新到当前所在分支的最新版本。

示例

  • 将当前签出的版本更新为最新版本:

$ vb update
UPDATE work2.txt
REMOVE work3.txt
ADD work3/work3.txt
ADD work4.txt
-------------------------------------------------------------------------------
updated-from: 93abb4c005a71800fe95d68f81144ff9ff89a9a8 2024-07-23 07:08:16 UTC
updated-to:   8aa0b7b6467217cf1a0a9f6fb04f9b7aa904b8ca 2024-07-23 07:13:26 UTC
tags:         trunk
...
  • 将当前签出的版本更改为哈希值为 93abb4c005 的版本:

$ vb update 93abb4c005
UPDATE work2.txt
ADD work3.txt
REMOVE work3/work3.txt
REMOVE work4.txt
-------------------------------------------------------------------------------
updated-from: 8aa0b7b6467217cf1a0a9f6fb04f9b7aa904b8ca 2024-07-23 07:13:26 UTC
updated-to:   93abb4c005a71800fe95d68f81144ff9ff89a9a8 2024-07-23 07:08:16 UTC
tags:         trunk
...

关于 update 命令更多的设置可以参考 update 命令。

备注

VisionByte 默认开启自动同步。在自动同步模式下,update 将首先返回您克隆的仓库或您最近同步的仓库,并将所有最近的更改拉入您的本地仓库。然后它将最近的更改合并到仓库对应的工作副本中。提交后会自动进行推送到远程仓库。因此,在正常实践中,很少使用 pushpullsync 命令。但了解它们仍然很重要。

历史记录

在提交了若干更新,又或者克隆了某个项目后,可能想要 回顾该项目的历史记录,可以进行以下操作:

vb timeline

示例

  • 显示项目时间线:

$ vb timeline
=== 2024-07-25 ===
06:38:56 [cf373f344d] open关闭测试 (user: 36657 tags: private1.0)
=== 2024-07-24 ===
11:49:41 [14d2768e53] mv命令测试2 (user: 36657 tags: private1.0)
11:48:35 [f38b3c2aca] mv命令测试 (user: 36657 tags: private1.0)
09:49:10 [74bf959467] patch测试 (user: 36657 tags: private1.0)
...

撤销重做

如果执行更新并发现更改弄乱了工作副本中原有的某些内容(可能是同事签入了不兼容的更改,更多的是和同事对同一文件进行了更改),想要 撤销工作目录中已暂存或已进行的更改 ,即 将工作目录或索引恢复到以前的状态(本质上是撤销最近的更改),可以进行以下操作:

vb undo [OPTIONS] [PATH...]

如果指定了执行撤销的文件路径 PATH...` ,则恢复指定文件的内容,如果没有指定文件则撤销上一条可以撤销的命令。

undo 只能撤销上一个操作是以下命令的工作:

vb update
vb merge
vb revert
vb stash pop
vb stash apply
vb stash drop
vb stash goto
vb clean

redo 是重做命令,重新执行被 undo 撤销的命令:

vb redo [OPTIONS] [PATH...]

示例

  • v2.0 分支合并到 trunk :

$ vb merge v2.0
ADDED v2.0.txt
ADDED v2.0_work1.txt
 "vb undo" is available to undo changes to the working checkout.
  • 撤销上一个合并的命令:

$ vb undo
DELETE v2.0.txt
DELETE v2.0_work1.txt
  • 重做合并命令:

$ vb redo
NEW    v2.0.txt
NEW    v2.0_work1.txt

还原

如果不满意目前某些文件的修改操作,想将 工作副本中的更改还原到仓库版本或者指定版本

vb revert [OPTIONS] [PATH...]

示例

  • 将本地副本修改还原到仓库版本:

$ vb revert
REVERT   commit/commit.txt
REVERT   new.txt
UNMANAGE README.md
 "vb undo" is available to undo changes to the working checkout.

分支

创建分支

在 VisionByte 系统上,trunk 是默认主干分支名称,也是任何时候需要但未指定分支名称时的默认名称。在其他分支上进行开发,完成后再将它们合并到主分支上。

完成项目编译后,提交时创建分支

vb commit --branch NEW_BRANCH_NAME

创建一个名为 NEW_BRANCH_NAME 的分支。

示例

  • 显示未提交的更改:

$ vb changes
ADDED      README.md
ADDED      test.txt
  • 将所有更改提交到新创建的 v2.0 分支上:

$ vb commit --branch v2.0 -m "v2.0 分支创建"
New_Version: b70aa286f9c4f65ac6c02b1ad39146e03722c6404b03aaec4f54d812dbf4967e

也可以 在开始编辑之前创建新的分支 ,使用 branch 命令:

vb branch new NEW_BRANCH_NAME BASIS

在指定的签入 BASIS 处创建一个名为 NEW_BRANCH_NAME 新分支,该分支会继承签入 BASIS 的项目所有工程文件。

当创建多个分支后,需要在不同的分支进行编辑,切换分支:

vb update BRANCH_NAME

当进行分支切换操作时,VisionByte 会重置您的工作副本目录,使该分支的目录恢复到最后一次提交时的状态。

该命令其他设置可以参考 branch 命令。

示例

  • 创建新分支 v2.0:

$ vb branch new v2.0 trunk
New branch: 7610bf633eb601884ab8f38090338d3cd3353858a4d742b6aad0d42af0460d20
  • 查看现有分支情况:

$ vb branch
 * trunk
   v2.0
  • 切换到分支 v2.0 :

$ vb update v2.0
-------------------------------------------------------------------------------
checkout:     7610bf633eb601884ab8f38090338d3cd3353858 2024-11-25 20:16:01 UTC
tags:         v2.0
comment:      Create new branch named "v2.0" (user: Administrator)
changes:      None. Already up-to-date

备注

当前分支以星号 * 标记。私有分支以井号 # 标记。

警告

在某分支上完成工作后一定要在该分支上执行 commit 命令,如果没有提交,而是切换到其他分支上进行提交,则这些更改将保存在执行 commit 的分支上,而不是编辑它的分支上。

合并分支

将分支 合并 到主分支上,首先切换到主分支上,然后开始将另一个分支合并到主分支上。

例如,要将 v2.0 分支更改合并到主分支 trunk 上,则执行以下操作:

# 切换到主分支:
vb update trunk

# 将 v2.0 分支合并到 trunk 分支:
vb merge v2.0

# 提交:
vb commit -m "合并v2.0分支"

合并 merge 命令可以选择参数,其参数可以是任何适用于更新的版本标识符形式。

该命令是将被合并分支合并到另一分支的工作副本中,并不会对仓库进行任何更改。 所以必须单独运行 commit (ci) 命令以将合并更改添加到仓库中,以使它们持久化,以便您的同事可以看到它们。但在执行此操作之前,可以先运行一些测试来验证合并不会导致代码中的逻辑错误。

合并后,被合并的分支不会有任何影响,所以同一分支可以多次合并,不会出现任何问题。VisionByte 会自动跟进并避免在进行多次合并时发生冲突。 因此,即使您之前已将 v2.0 分支合并到主干,也可以再次合并,并且 VisionByte 会自动只提取自上次合并以来发生的更改。