快速开始¶
本指南可帮助快速轻松地开始使用 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
,是包含项目完整历史记录的单个数据库文件)和工作副本(用于完成工作的目录,由程序从仓库中提取出当前项目的快照)对项目进行控制管理。其基本工作流程如下:
开始新项目¶
要使用 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 命令。
历史记录¶
在提交了若干更新,又或者克隆了某个项目后,可能想要 回顾该项目的历史记录,可以进行以下操作:
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 会自动只提取自上次合并以来发生的更改。