跳转到主内容

Plastic SCM 测试环境搭建指南

非官方测试版翻译

本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →

当您修改 segment_plastic.go 文件时,可能需要在实际的 Plastic SCM 环境中测试变更。本文档将帮助您快速掌握 Plastic SCM 的基本使用。

贡献指南 中有关于 开发容器与 Codespaces 的章节,您也可以在这些环境中配置 Plastic SCM。

服务器搭建

您可以在官方安装指南中找到完整说明,以下是简要步骤:

在 Debian 或开发容器中安装

首先添加软件源:

sudo apt-get update
sudo apt-get install -y apt-transport-https
wget -qO - https://www.plasticscm.com/plasticrepo/stable/debian/Release.key | \
gpg --dearmor | sudo tee /usr/share/keyrings/plasticscm-stable.gpg > /dev/null
echo "deb [signed-by=/usr/share/keyrings/plasticscm-stable.gpg] \
https://www.plasticscm.com/plasticrepo/stable/debian ./" | \
sudo tee /etc/apt/sources.list.d/plasticscm-stable.list
sudo apt-get update

然后安装服务器:安装结束时可能出现错误,详见下文说明

sudo apt-get install -y plasticscm-server-core

在配置安装包时可能出现错误,此时服务未注册为系统服务。 请忽略此报错!

服务器配置

通过以下命令进行配置:

sudo /opt/plasticscm5/server/plasticd configure \
--language=en \
--workingmode=NameWorkingMode \
--port=8087 \
--sslport=8088

恭喜! 服务器配置完成。更多信息请参考官方配置指南

启动服务器

若安装无报错,服务已自动注册,可通过以下命令启动:

sudo service plasticd start

若未注册,需手动启动(例如在开发容器中):

sudo /opt/plasticscm5/server/plasticd start

此操作会阻塞当前终端直到服务进程结束,您可能需要另开终端继续操作。

至此 Plastic SCM 服务器应已成功启动。

客户端配置

Plastic SCM 与 Git 类似,提供 CLI(及可选的图形界面)

在 Debian 或开发容器中安装

在 Debian 或开发容器中安装 Plastic SCM CLI 的步骤如下:

sudo apt-get install -y plasticscm-client-core

客户端连接配置

运行以下命令连接服务器并创建账户:

cm configure \
--language=en \
--workingmode=NameWorkingMode \
--server=localhost \
--port=8087

恭喜! 客户端应已成功连接至服务器。更多配置详情请参考官方配置指南

可通过以下命令测试连接并查看许可信息:

cm li

功能测试

现在进入实战环节!服务器已自动创建名为 default 的仓库,包含 /main 分支。

Plastic SCM 命令行工具为:cm

如需查看支持的命令:

cm showcommands --all

创建工作区

使用 Plastic 前需创建本地工作区:

cd ~
mkdir dev
cd dev
cm wk create workspace workspace rep:default
cd workspace
cm status

添加文件

首先创建本地私有文件:

echo "test" > myfile.txt
cm status --all

将文件添加至本地变更:

cm add myfile.txt
cm status

测试提示: Private(私有)和 Added(已添加)文件都应计入 plastic 段的 Added 属性统计。

提交变更

在本地添加、修改、移动或删除文件后,需要提交变更以创建新变更集。运行以下命令提交所有本地变更:

cm status | cm ci . -c "my first commit"

撤销本地变更

若需要放弃或无法提交本地变更,可使用撤销命令。此命令将撤销所有本地变更:

cm status | cm undo .

修改/移动/删除文件

这些操作均在文件层面进行。可运行 cm status 命令查看 Plastic SCM 对操作的追踪记录。使用前文所述的提交方法提交变更。

测试提示: 这些变更都应计入 plastic 段对应属性(Modified/Moved/Deleted)的统计。

分支操作

前文介绍了 Plastic SCM 客户端的基本操作。接下来将深入讲解分支/标签的使用及合并操作。

创建新分支

基于 /main 分支最新变更集创建新分支:

cm br /main/new-branch

提示:查看全部分支使用

cm find branches

为当前变更集设置标签

工作区始终对应特定变更集(见 cm status)。可为当前变更集设置标签以便快速定位或文档记录:

cm label mk "BL0001"

提示:查看全部标签使用

cm find labels

切换工作区分支

切换至目标分支:

cm switch /main/new-branch
cm status

测试提示: 分支名称应反映在 plastic 段的 Selector 属性中

切换到指定变更集

每次提交生成唯一变更集编号。切换至指定变更集:

cm switch cs:1

测试提示: 变更集编号应反映在 Selector 属性中的 plastic

切换到标签

切换至指定标签:

cm switch BL00001

测试提示: 标签名称应反映在 plastic 片段的 Selector 属性中

合并分支

需先切换到目标分支,然后合并源分支:

cm switch /main
cm merge /main/new-branch --merge
cm status

提示:此操作仅在本地准备合并,需提交变更才能完成合并!

测试提示: 待处理合并应反映在 plastic 段的 MergePending 属性中

精选合并 (Cherry-pick)

普通合并会合并分支所有变更,而精选合并仅合并单个变更集的变更:

cm merge cs:8 --merge --cherrypicking

提示:此操作仅在本地准备合并,需提交变更才能完成合并!

测试提示: 待处理的精选合并应在 plastic 段的 MergePending 属性中体现

合并冲突

合并时可能遇到多种冲突类型

双子冲突 (Evil Twin)

当源分支和目标分支添加了同名文件时触发

cm br mk /main/sub-branch
cm switch /main/sub-branch
echo "1" > twin.txt
cm add twin.txt
cm ci twin.txt

cm switch /main
echo "2" > twin.txt
cm add twin.txt
cm ci twin.txt

cm merge /main/sub-branch --merge

提示:系统将立即要求解决此冲突

双向修改冲突

当源分支和目标分支修改了同一文件时触发

cm switch /main
echo "base" > file.txt
cm add file.txt
cm ci file.txt

cm br mk /main/test

echo "on main" > file.txt
cm ci file.txt

cm switch /main/test
echo "on test" > file.txt
cm ci file.txt

cm switch /main
cm merge /main/test --merge

提示:这会尝试打开 gtkmergetool,但在开发容器内会失败!

修改过的文件 vs. 已删除的文件

这种情况发生在合并时,文件在合并的一方被修改,而在另一方被删除

cm switch /main
echo "base" > deleteme.txt
cm add deleteme.txt
cm ci deleteme.txt

cm br mk /main/del

rm deleteme.txt
cm ci --all

cm switch /main/del
echo "on del" > deleteme.txt
cm ci deleteme.txt

cm switch /main
cm merge /main/del --merge

提示:这将提示你直接解决合并冲突