DuiYing版本控制介绍

更新
版本更新至 1.2.0

DuiYing是一款集中式的版本控制软件,从文本到图片,你可以使用它对任意类型的文件进行版本控制。

集中式,意味着所有文件的历史版本都存放在服务器上。
如果你想修改一个文件,需要先从服务器上获取文件到你自己的电脑上,然后修改文件,再上传到服务器上。

通过DuiYing,你可以:

  • 添加、编辑和删除文件
  • 查找文件
  • 查看文件的历史版本
  • 查看项目的任一阶段
  • 管理文件的访问权限
  • 使用dy命令行进行流程管理
  • 使用python自定义文件流程

软件特点

  • 简单易学
    我们提供友好的文档、视频和技术支持,让您的团队可以轻松地掌握软件的使用。

  • 集中式的版本控制
    所有的文件历史版本都会被保存到服务器上,方便运维管理。

  • 区分大小写
    即使服务器运行在windows系统上,DuiYing的文件路径都是区分大小写的。

  • 支持非英文路径
    采用utf8编码,文件路径支持非英文字符。

  • 精确到文件的权限管理
    你可以对任意的文件或者文件夹设置访问权限。

  • 节省服务器空间
    在服务器上,内容相同的文件只保存一份,减少空间占用。

本教程将全面介绍DuiYing版本控制软件的功能,内容清晰易懂,适合学习参考。

功能预览

在图片上右击,选择"在新窗口打开",可以查看更清晰的动图。
或按住 Ctrl, 滚动鼠标滚轮调整网页缩放。

登录
login

添加文件 add files

编辑文件 edit files

删除文件 delete files

获取历史文件 get history

视频教程

介绍


下载

服务器设置


下载

客户端下载和安装


下载

登录


下载

界面更新


下载

添加文件


下载

编辑文件


下载

删除文件


下载

锁与解锁


下载

还原


下载

同步文件


下载

用户、组和权限设置


下载

下载说明

DuiYing版本控制程序分为四个部分

程序说明
dys服务器程序
dy客户端命令行程序
dyui客户端界面程序
dym客户端Python库(支持python3.12.7 64-bit)

下载链接

下载之前,你需要阅读并接受 DuiYing软件许可协议
升级请参考 安装

最新版本

v1.2.0


Windows

dy-v1.2.0-x86_64-pc-windows-msvc.7z
  sha256: 8b57a3950965e24ae25f88781f91829bea2622ff99022d3f6cf79dd797e26ffc

dym-v1.2.0-cp312-none-win_amd64.7z -- Python 3.12.7 64-bit
  sha256: 0cff13bf5c2f0683e3562f637fd070aa955329798ae96268d4eb9a48672a8961

dys-v1.2.0-x86_64-pc-windows-msvc.7z
  sha256: 7ca16126a6f79377d6a19b4b14db0da3950338ae43edd56853c5ce6ad299168e

dyui-v1.2.0-x86_64-pc-windows-msvc.7z
  sha256: 5a007f65aa330027c11cac460295a42da54c5db4522306ab96190902bc5198d3

Linux

dy-v1.2.0-x86_64-pc-linux-gnu-glibc-2.17.tar.xz
  sha256: 81509f1dd16524e59e16cfbb1e8902321c9869a23eb5421cb5dbbe1ba1939fb4
dys-v1.2.0-x86_64-pc-linux-gnu-glibc-2.17.tar.xz
  sha256: 60fc17f553395ee2153b1df619eb615076b7b4b5e2c02b225d7c5c44972b18df

更新日志:

  • 修复lock, unlock, revert, submit命令可能引起的服务器卡住的问题。
  • 优化ls命令。

旧版链接

安装

本章节将介绍如何安装 dyui, dy, dym, dys。

若是 升级 安装,建议操作如下:

dyui, dym 先删除旧版本,再重新安装。
dy, dys 可以直接替换完成升级。
客户端服务器 需要升级至 相同版本

客户端

目前客户端仅支持Windows10及以上运行。

dyui 安装

  1. 解压 dyui-*-x86_64-pc-windows-msvc.7z 到安装目录, 建议安装在 %localappdata% 目录下。
  2. 双击 dyui/bin/dyui.exe 运行程序。
  3. (可选)创建 dyui/bin/dyui.exe 的快捷方式到桌面。

注意

  1. 如果程序被安装在需要管理员权限的目录(例如“C:\Program Files”),则需要 以管理员身份运行 dyui.exe
  2. 如果运行dyui遇到VCRUNTIME140_1.DLL was not found报错, 需要安装vc++库,官方安装连接
    The Visual C++ Redistributable for Visual Studio 2015-2022

dym 安装

  1. 安装 python3.11.4
  2. 下载 dym-*-cp311-none-win_amd64.7z 并解压,在命令行运行 pip install dym-***-win_amd64.whl

dy 安装

  1. dy-*-x86_64-pc-windows-msvc.7z 解压到任意目录即可。

服务器

本章节包括dys在Linux和Windows上的配置教程以及配置文件的介绍。

Linux

支持系统

  • Debian 12 amd64
  • Fedora 38 x86_64
  • Rocky 9.2 x86_64
  • CentOS 7 x86_64

硬件要求

  • 内存 4G

服务器搭建

我们提供两种安装方法,脚本安装和手动安装,选择其一即可。
dys默认监听端口为 7000。

脚本安装

需要root权限,在终端运行以下命令,根据提示进行安装。

bash <(curl http://duiying.io/tutorial/file/install_on_linux_glibc_2_17.sh)

如果失败,尝试运行以下命令。

bash <(curl http://duiying.io/tutorial/file/install_on_linux_glibc_2_17_ignore_ssl_check.sh)

手动安装

以Debian 12 amd64为例。

下面的步骤将会把dys安装在 /opt/dys/ 目录下。

  1. 下载 dys-v1.2.0-x86_64-pc-linux-gnu.tar.xz

  2. 切换到root。

su -
  1. 创建 /opt/dys/ 文件夹。
mkdir -p /opt/dys
  1. dys-v1.2.0-x86_64-pc-linux-gnu.tar.xz 解压至 /opt/dys 目录下。
tar -xf dys-v1.2.0-x86_64-pc-linux-gnu.tar.xz -C /opt/dys/
  1. 进入/opt/dys, 添加可执行权限。
cd /opt/dys
chmod u+x dys   
  1. dys初始化,添加管理员名称和密码。

为了安全, 管理员的密码建议15位以上, 需要有一定的复杂度(比如,密码同时包含字母大小写,数字和特殊符号等, 密码尽量保持随机性, 不夹带有意义的单词或数字

./dys init
  1. 添加systemd service。
vi /lib/systemd/system/dys.service
[Unit]
Description=dys service
After=network.target

[Service]
Type=simple
Restart=always
ExecStart=/opt/dys/dys
WorkingDirectory=/opt/dys

[Install]
WantedBy=multi-user.target
  1. 重新加载systemd。
systemctl daemon-reload
  1. 添加开机启动。
systemctl enable dys
  1. 启动dys服务, dys默认监听端口为 7000
systemctl start dys
  1. (可选)配置dys, 参数请参考 配置文件
vi /opt/dys/dys.cfg
  1. 确认dys运行状态。
systemctl status dys
  1. 如果安装了防火墙,需要开放dys的监听端口。
ufw allow 7000

致谢

感谢微信号为 雪飘人间 的用户提供dys在Ubuntu Linux 22.04上的配置教程供我们参考。

Windows

系统要求

  • Windows 10 包含(适用于Linux的Windows子系统)

硬件要求

  • 内存 4G

服务器搭建

下载 dys-*-x86_64-pc-windows-msvc.7z, 将dys程序解压到任意安装目录, 在本例中, 安装目录为 D:\dys
dys files

双击dys.exe, 此时程序将会生成一些文件夹, 如下图
essential dirs

文件夹作用
data存放保存到服务器上的文件数据
license存放license文件
log存放dy服务器日志文件
root存放文件路径, 此文件夹需要区分大小写

由于windows存在路径长度限制, data和root文件夹都会生成很长的路径,
所以简短的安装路径有助于避开路径过长的问题.

设置root文件夹,使其可以区分大小写

Windows系统默认情况下,文件或文件夹是大小写不敏感的,需要手动开启
按下快捷键 Win + r, 输入 appwiz.cpl, 然后按回车键
单击左上角的启动或关闭 Windows 功能, 在弹出的对话框中, 找到并 勾选 适用于Linux的Windows子系统, 单击 确定 并重启系统。
check_sublinux_system 使用快捷键 Win + r, 输入 cmd, 按 Ctrl + Shift + 回车键, 将会以管理员身份打开命令窗口, 因为本例中,安装目录为 D:\dys, root文件夹的位置就是D:\dys\root, 所以此处需要启用 D:\dys\root 的大小写敏感属性。
在命令行窗口中,输入

fsutil.exe file SetCaseSensitiveInfo "D:\dys\root" enable  

如果你的root文件夹不是 D:\dys\root, 需要将上述命令中的 "D:\dys\root" 换成你自己电脑上的 root 目录。
命令执行成功, 则如下图, 显示已启用目录的区分大小写属性
case sensitive

dys初始化

按住Shift, 在dys文件夹空白处右击, 选择 "在此处打开Powershell窗口"
open powershell
输入 .\dys.exe init 进行初始化, 并设置dy管理员账户的用户名和密码
此处, 我们设置用户名为 admin, 密码为 p

此处的用户名和密码只是简单设置
在实际项目应用中, 管理员用户名可以是任意名称(由字母、数字或下划线组成, 以字母或下划线开始), 为了安全, 管理员的密码建议15位以上, 需要有一定的复杂度(比如,密码同时包含字母大小写,数字和特殊符号等, 密码尽量保持随机性, 不夹带有意义的单词或数字)。

dys init
设置完毕后, 需要再按一次回车键完成

启动dys服务

双击dys.exe, 即可启动服务
dys默认监听端口为 7000

配置文件

dys 程序所在目录新建 dys.cfg, 示例如下

ip_port = "0.0.0.0:7000"    # 此处可添加注释
arc_root = "D:/dys/root"
hash_data_root = "D:/dys/data"
login_expired_time = 1440
password_min_length = 5
# "#"后,可添加注释

名称说明
ip_port监听端口
arc_rootroot文件夹,用于存放文件指针,此文件夹中需要区分大小写
hash_data_root用于存放文件
login_expired_time登录有效期,单位是分钟,过期将需要重新登录
password_min_length密码最低长度,值若为0,则没有长度限制

登录

运行 dyui\bin\dyui.exe, 输入 ServerUser, 如下图
login interface
Server 为dys服务器的地址
user 为上一节中, 初始化dys时所创建的管理员

-- 如何查看服务器地址
到运行dys服务的电脑上,按 Win + r, 输入 cmd, 然后按回车键
win r cmd
在命令行窗口输入 > ipconfig 即可查看服务器ip地址
login ipconfig

由于是第一次登录,所以我们需要创建 工作空间(Workspace)

-- 什么是工作空间(Workspace)
工作空间(Workspace)就是定义了 dy路径 和 本地路径 转化的规则
例如, 文件A,
在dy上的路径为 //arc/files/文件A
在本地的路径为 C:\files\文件A
当我们从服务器上获取 //arc/files/文件A 到本地时,就需要将服务器路径 //arc/files/文件A 转化为本地路径 C:\files\文件A
这两个路径的转化规则,就是由工作空间(Workspace)决定的

  1. 单击 Workspace 参数框右侧的图标
    login workspace
    此时需要输入登录密码, 输入上一节中设置的密码, 然后按回车即可
    login passwd
  2. 在 Select Workspace 对话框空白处右击,选择New, 创建工作空间
    select workspace
  3. 在弹出的对话框中,设置 Workspace Name 为 admin_workspace,设置 Workspace Root 为需要进行文件管理的目录, 设置完成后,单击 Apply And Close 就可以新建完成。
    new workspace
    Workspace新建完成后,在Select Workspace对话框中就可以看到刚刚新建的workspace,如下图
    select workspace v1
    选择 admin_workspace, 然后单击 OK
    经以上步骤,工作空间就会被添加到登录界面的 Workspace 选项中
    login interface with workspace
    勾选 Set as default(设置为默认),这样下次启动dyui, 将默认显示此次的登录信息
    单击 Login 登录

界面语言

dyui目前支持中文和英文界面。
"en" 为英文
"zh" 为中文
login interface lang

可以通过 "编辑(Edit)" -> "偏好(Preferences)", 对字体进行设置。
经测试,以下字体对中文支持比较友好:
Serif Normal
Yu Gothic UI Normal

文件操作

在左侧目录树中,包含 ArcWorkspace 两块面板
Arc 显示的是服务器上的文件
Workspace 显示的是本地电脑上的文件
tree view panel

DuiYing目前包含以下文件操作

  • Add(添加文件)
  • Edit(编辑文件)
  • Delete(删除文件)

这些操作只是通知dy服务器,你正在对文件进行修改,服务器会对你操作的文件打上相应的标记。
在你Submit(提交)之前, 服务器上的文件版本不会更改。
现在,请先把需要进行版本控制的文件,拷贝到我们在上一节设置的 Workspace Root 目录下,接下来,我们将对文件进行 添加编辑删除 操作

添加文件(Add)

右击需要添加的文件或文件夹,选择添加(Add...)
right click add

在弹出的对话框中,单击右下角的 OK .
add file dialog

若添加成功,则显示如下
add file mark

不过这仅仅是标记添加,如果想提交到dys服务器,还需要按下面的步骤进行操作

右击刚刚被标记的文件或文件夹,选择提交(Submit...)
add submit files

在弹出的对话框中,添加针对此次提交的描述,然后单击Submit(提交)按钮,等待提交完成
add submit dialog

提交成功后,图标变化如下
add finish submit

当前图标表示 本地已有版本为最新版.
上图中右侧的 1|1 , 左侧的1表示本地拥有的版本,右侧的1表示该文件在服务器上的版本数量。

编辑文件(Edit)

编辑只能操作服务器上已有的文件

右击文件或文件夹,选择编辑(Edit...)
right click edit

在弹出的对话框中,单击右下角的 OK .
edit file dialog

若编辑成功, 则显示如下图, 此时你就可以修改文件了
edit file mark

修改文件完成后, 到dyui界面, 按 F5 刷新界面, 如果dyui检测到文件被修改, 则会把文件标记为深色, 如下图
check changed file

右击文件或文件夹,选择 提交(Submit...)
edit submit files

在弹出的对话框中,添加针对此次提交的描述,然后单击 Submit(提交) 按钮,等待提交完成
edit submit dialog

提交成功后,图标变化如下
edit finish submit

此时,我们注意到文件后面的版本信息变成了 2|2, 即该文件在服务器上有两个版本,本地版本为第2版

有时, 你可能会在文件图标的右侧看到修改的标记, 像下图这样
edit by other
这说明这些文件正在被别人修改。
按住 Ctrl 键, 然后将鼠标放到文件上面, 停留2秒左右, dyui就会显示正在编辑该文件的用户
file tips

dy是允许两个或两个以上的人同时编辑文件的, 但提交的时候只能保留一个人的修改。
例如, 你和 用户A 在同时编辑一个文件, 如果 用户A 先提交, 然后你再提交, 此时该文件的最新状态仅会保留你提交的修改, 而 用户A 提交的修改将会变成历史版本。

如何避免这种编辑冲突, 请参考 锁(Lock)

删除文件(Delete)

删除只能操作服务器上已有的文件

右击文件或文件夹,选择删除(Delete...)
right click delete

在弹出的对话框中,单击右下角的 OK .
delete file dialog

此时,如果本地文件与服务器一致, 则本地文件会被删除, 显示如下
delete file mark

如果本地文件与服务器不一致, 则本地文件会被保留。

右击文件,选择提交(Submit...)
delete submit files

在弹出的对话框中,添加针对此次提交的描述,然后单击Submit(提交)按钮,等待提交完成
delete submit dialog

提交成功后,如果需要查看已删除的文件需要激活 显示已删除文件(show deleted files)
delete finish submit

此时,我们注意到文件后面的版本信息变成了 0|3, 即该文件本地没有版本信息, 在服务器上有3个版本。
删除操作并不会真正删除文件,只是新增了一个处于删除状态的版本。

重命名

目前DuiYing没有直接的命令来重命名。

可以通过 删除(Delete)和添加(Add)来完成重命名操作。

书架(Bookshelf)

有时候,你需要把文件共享给别人,但又不想影响服务器上的文件版本,此时,你可以用书架功能。它会把文件放在一个临时的位置,方便共享。

你可以通过“上架(Shelve)”将文件放到书架上,也可以通过“下架(Unshelve)”将文件从书架上删除。

别人可以通过“获取(Get)”来下载书架上的文件。

接下来,让我们一块看一下如何进行上述操作。

上架(Shelve)

在“待定”面板中,每个待定号都会包含一个书架,如下图。

bookshelf_01

你可以将“档案”或“工作空间”里的文件拖拽至“书架”进行上架。

bookshelf_02

也可以将待定号中的文件拖拽至“书架”进行上架。

bookshelf_03

如果想上架整个待定号中的文件,需要右击待定号,选择“上架”。

bookshelf_04

在上架的对话框中,可以通过“正则表达式”来过滤上架的文件。

“上架”仅会将本地的文件上架,如果本地文件不存在或读取失败,则会出现如下警告信息,不会上架。

bookshelf_05

用户需要拥有Edit权限,才可以上架文件。

获取(Get)

你可以通过找到书架所在的待定号,选择单个文件进行获取,或者选择“书架”来获取书架上的所有文件。(右击图像在新窗口打开会更清晰)
bookshelf_06

如果想查看书架上的文件在档案中的路径,则需右击文件,选择“在档案中显示”。
bookshelf_07

如果想快速找到待定号,可以使用菜单 “编辑” -> “跳转到书架”。
bookshelf_08

如果本地文件已存在,则需要勾选对话框中的“覆盖”选项才可以获取成功。
bookshelf_09

用户需要对路径拥有Read权限,才可以获取。

下架(Unshelve)

如果你想停止共享书架中的文件,可以通过“下架”来删除书架中的文件。

在书架中,可以选择文件进行下架,
bookshelf_10

也可以右击“书架”,下架当前书架中的所有文件。
bookshelf_11

锁(Lock)

当你标记添加,编辑或删除文件后,如果不想文件被别人提交,则需要锁上文件
文件被锁后,只有锁上文件的人用户可以提交这些文件

一个文件, 在标记添加、编辑或删除之后, 提交之前, 才可以上锁。在提交到服务器后, 文件会自动解锁。

右击文件或文件夹,选择上锁(Lock)
right click lock

完成后,文件左下方会添加一个锁的图标
lock finish

解锁(UnLock)

右击文件或文件夹,选择解锁(Unlock)
right click unlock

完成后,文件左下方锁的图标将会去除
lock finish

还原(Revert)

还原(Revert)操作将取消文件的添加、编辑和删除标记以及锁。

选择文件或文件夹,右击,选择 还原(Revert)
revert file
完成后,标记被取消
revert file finish

在pending上右击可以选择 Revert if unchanged, 相应的pending列表中,没有被修改的文件会被 还原(Revert)
revert if unchanged

与左侧的文件树相比,Revert of unchanged 检测文件是否更改会更加可靠。

移除本地文件(Remove Local Files)

移除本地文件(Remove Local Files)将会删除本地文件,服务器上的文件不受影响
选择文件或文件夹,右击,选择 移除本地文件(Remove Local Files)
remove local files

移除完成后,本地的文件将会被移除
remove local files finish

同步文件(Sync Files)

同步文件(Sync Files) 可以把dy服务器上的文件获取到本地

选择需要获取的文件或文件夹,右击,选择同步最新文件(Sync Latest),即可把文件的最新版获取到本地。
sync latest

右击文件或文件夹, 选择 Open Path, 会打开并选择路径
login open path

如果你需要获取特定的版本,可以在右击后,选择 Sync...,在弹出的对话框,#后面的输入框内填上需要获取的版本号,然后单击Sync同步文件
sync file dialog

在Sync Files...对话框中
# 表示引用版本的序号
@ 表示引用更改(change)号
有关更改号的内容,请查看 pending and change

如果dyui检测到本地文件被修改, 或者本地文件被手动删除(不是使用 移除本地文件(Remove Local Files) 删除的),同步文件将不会获取文件,此时你可以通过 Sync Files... 操作,在弹出的对话框中勾选 Force ,这样当你单击Sync按钮后,dyui会强制同步本地文件到你指定的版本, 同时本地文件会被 覆盖 sync force

待处理(pending) 和 更改(change)

dy将会用一个数字来记录你每一次对文件的修改
pending 用来组织你正在修改的文件
change 用来记录你每一次提交到dy服务器的修改

接下来我们将通过一个例子来说明pending和change的使用
比如你今天收到一个任务需要上传5张图片和一份文件, 结构如下图
animal folder

接下来开始添加,先选择 图片pic_01.png ~ pic_05.png,右击,选择添加(Add...) add files
在弹出的对话框中单击OK后,在待处理(pending)面板会自动创建一个待处理号(pending number),单击左侧的展开按钮,你会发现刚刚添加的文件都会组织在这个号码里
pending

接着继续添加文件,右击 "文件.txt",选择添加(Add...),在弹出的对话框中,pending选择刚刚新建的待处理号,也就是包含我们刚刚添加的5张图片的待处理号,单击OK
pending-2

此时你会发现"文件.txt"和刚刚的5张图片在同一个待处理号中
pending-3

接下来就是提交(Submit...) 右击待处理号 11 ,选择提交(Submit...),在弹出的对话框中,填写针对这些文件的描述,"5张图片和一份文件",单击OK,等待提交完成
submit

这样,dy将会用一个唯一的更改号来记录此次修改。如果想要查看更改号,单击 view,选择 Submit,就可以找到你刚刚提交的内容。

submit 1

submit 2

此时,你就可以发邮件通知,"任务完成了,更改号是 11 ".

此时, 其他人可通过以下步骤查看你的提交 单击菜单 View -> Submit ,打开 Submit面板
Filter 后的选项改为 User, 单击右侧的 刷新 按钮
filter user

此步骤是用来过滤Submit结果的。
由于此处 User 为空,所以会查看所有人的提交。
如果 User 为"admin",则仅会查看"admin"的提交。

右击更改号,选择 View Change... , 就可以查看更改号的相关信息
submit 3

Submit 面板中,如上图,红色三角表示当前登录用户的提交,蓝色三角表示其他用户的提交。
待处理号和更改号不一定总是相同的。
查看已提交的更改号,需要到通过菜单 View --> Submit ,在 Submit 面板下查看。
如果更改号顺序错乱,可单击 Filter User 下方的 change 对更改号进行排序。

如果想同步到本地,单击 Sync,就可以获取此次更改的文件, 勾选 Force 则会覆盖本地文件
submit 4

查找(Find)

单击菜单View -> Find,打开查找面板
view find

输入需要查找的范围和关键字,按回车键(Enter)或单击右侧查找图标,就可以开始查找了
Find Path 查找路径,路径越精确,查找速度越快
Find Name 需要查找的关键字
find panel

历史(History)

单击菜单View -> History, 打开历史面板
view history

单击需要查看历史的文件,就可以显示文件的历史版本了
view history panel

回滚(Rollback)

目前duiying并没有直接的命令来回滚历史,但可以通过以下步骤来回滚历史。

回滚文件历史

假设文件file.log有5个版本,我们需要将其第3版变为最新版本。

如果文件的最新版不是删除状态:

  1. 获取file.log文件的第3版。
  2. 将本地file.log文件更名为file_3.log(任意文件名都可以,只要不和当前文件夹下的其他文件名冲突)。
  3. 获取file.log文件至最新版。
  4. 编辑(Edit)文件。
  5. 删除本地的file.log文件,将file_3.log改名为file.log。
  6. 提交(Submit)file.log文件,并在提交对话框的描述中添加类似"回滚至版本3"的说明。

如果文件的最新版是删除状态:

  1. 获取file.log文件的第3版。
  2. 将file.log文件更名为file_3.log。
  3. 获取file.log文件至最新版。
  4. 将file_3.log改名为file.log。
  5. 添加(Add)文件。
  6. 提交(Submit)file.log文件,并在提交对话框的描述中添加类似"回滚至版本3"的说明。

回滚项目历史

假设 //project/ 最新提交号为1000,对应本地project文件夹,需要回滚到提交号为900的状态。

  1. 删除(Delete)//project/, 然后提交(Submit),并删除本地的project文件夹。
  2. 强制获取//project/至900。
  3. 将本地project文件夹改名为project_900。
  4. 获取//project/至最新状态。
  5. 将project_900改名为project。
  6. 添加(Add) //project/目录并提交,在提交对话框的描述中添加"回滚至提交号900"的说明。

工作空间

工作空间是用来将服务器的路径对应到本地的路径, 一个工作空间可以被多人在不同的电脑上使用。
通过工作空间,你可以:

  • 制定服务器路径到本地路径的转化规则
  • 忽略不需要的路径

新建工作空间

  1. 单击菜单 View -> Workspace, 打开工作空间的面板。
  2. 在工作空间的空白处右击,选择 New, 在弹出的对话框填写相应的内容。
    workspace right click new
    workspace new dialog
    Workspace Name 设置工作空间的名称。
    Workspace Root 设置工作空间的根目录,设置完成后,所有从服务器上获取的文件都会在这个文件夹内。
    Mapping 设置服务器路径与本地路径的对应关系。
    Description 设置工作空间的描述。
  3. 单击 ApplyApply And Close 新建完成。

Mapping 规则

  • 以‘/’结束的路径被DuiYing视作 文件夹,否则路径将被视作 文件
#例如
//dy-v0.9.42/dyui --> ./dyui  # 表示“文件” //dy-v0.9.42/dyui 对应的本地“文件”路径为 根目录/dyui
//dy-v0.9.42/dyui/ --> ./dyui/  # 表示“文件夹” //dy-v0.9.42/dyui/ 对应的本地“文件夹”路径为 根目录/dyui/
  • 当路径符合Mapping中的多条规则,DuiYing只会生效最后一条规则。
    例如,在刚刚创建的Workspace中, //dy-v0.9.42/dyui/lib/asprintf.lib 既符合规则 // --> ./ , 也符合规则 //dy-v0.9.42/dyui/ --> ./dyui/ , 这种情况下,只有后一条规则会生效。

  • 在路径前加 '-' 表示忽略此路径, 忽略后此条路径将不会被显示。
    例如, - //dy-v0.9.42/icons/ 表示忽略此条路径。
    注意: - 是英文输入法状态下的减号。

  • '#' 之后的内容将被视作注释

删除工作空间

在Workspace面板中,选择需要删除的工作空间,单击鼠标右键, 选择"Delete"。

更改用户

单击"用户(User)" -> "更改用户(Change User)"。

如下图,其中绿线标出了用户可以自行修改的部分,包括密码、邮件和描述。

change user

如果用户修改了密码,则需要重新登录。

管理员

DY可以进行用户、组和权限的管理。

接下来,我们将会创建一个用户 "user1", 并且让其可以对路径 "//pictures/" 进行读(获取文件到本地)和写(修改服务器文件)。

创建步骤:

  • 创建组 pic (组的名称可以根据需要修改)
    由于dy是通过组进行权限设置的,所以需要先新建一个组。

  • 设置 pic 组的权限

  • 创建 user1,并加入到 pic

在dyui界面, 通过菜单 User -> Admin 打开管理界面
user admin
admin panel

日志

dy, dyui, dym, dys在运行过程中会产生日志。

程序  日志文件名路径
dydy.loginstall_dir/log/
dyuidyui.loginstall_dir/log/
dymdym.log%appdata%/dy/
dysdys.loginstall_dir/log/

说明:
install_dir 为程序所在的路径。

随着时间的推移, 日志文件会越来越大, 建议定期备份或删除。

dys.log日志记录了文件路径和data目录中文件的对应关系,格式如下
INFO file-hash: //NoAccess/projects/dev.proj -- 63d9ec225712be80c7ea8e9238ac25d27c308335b0d189224751e981d0ecb13c7bcba1c14c47252ef3309a05db2228b27f309ccceabc95c844a4add80029c340bf

建议定期备份, 以便于数据恢复。

注意:
在删除日志后,需要 重新启动程序 来生成日志文件。
如果在程序运行时删除日志文件,则在程序重新启动之前,将不会生成日志文件。

擦除(Erase)

注意: 擦除(Erase)将会完全删除路径及路径下所有文件的历史,并且无法恢复。

在档案(Arc)面板中选择需要擦除的路径,可以选择多个路径,单击菜单"编辑"(Edit) -> "擦除"(Erase)。

edit erase

在弹出的对话框中,勾选"确认擦除"(Confirm Erase),单击"擦除"(Erase)。

erase dialog

擦除后,路径以及路径下的所有文件的历史都会被永久删除。

如果遇到"擦除错误",如下图。

erase error

这是因为dys在删除root目录下对应的文件时,文件因被其他程序占用而无法删除。

此时需要管理员在dys的root目录下找到对应的文件,并手动删除。

管理员可以通过查询客户端的日志文件找到需要手动删除的路径,关键字如下
the following files are unable to erased, you should delete it manully on server
也可以通过dys服务器上的日志文件查询,关键字
WARN need to delete it manually

例如,假设root路径为 C:/dys/root/, 查询到dys日志信息如下
WARN need to delete it manually -- //Access/erase/prefs/pluginPrefs.mel

所以,我们需要到路径 C:\dys\root\NoAccess\erase\prefs 下, 删除pluginPrefs.mel

创建组

  1. 在Group区域右击,选择 New Group
    new group

  2. 在弹出的对话框中,填写如下信息,然后单击 OK, 组创建完成。
    new group dialog
    new group complete

设置权限

  1. 新建权限
    在最右侧一栏右击, 选择 New Permission
    new permission

  2. 填写如下信息, 单击 OK 完成创建。
    new permission dialog
    Group : 将权限添加到组, 单击右侧列表按钮可以选择组
    new permission list groups
    Permission : 权限

  • NoAccess 没有权限
  • Access    可以看到路径
  • Read     可以获取路径文件
  • Edit      可以标记修改文件
  • Write     可以提交
  • Admin    可以进行用户、组和权限的管理

    以上权限, 下一级将会包含上一级的权限
    比如, Edit 权限包含 ReadAccessNoAcess的权限
    也就是说, 如果一个组是Edit权限, 那么这个组也可以看到文件路径, 获取路径下的文件

    Path : 权限所对应的路径
    DY对路径的约定:
    文件夹以 '/' 作为结尾, 否则为文件
    例如
    //arc/abc   表示 //arc/abc文件
    //arc/abc/  表示 //arc/abc文件夹

    Comment : 权限注释
  1. 权限创建完成,并且权限被添加到 pic 组。
    new permission complete

创建用户

  1. 在User区域右击,选择 New User
    new group

  2. 在弹出的对话框中,填写如下信息,然后单击 OK, 创建完成。
    new group dialog
    单击Group参数右侧的图标,可以从列表中选择组。
    new group list groups
    添加完成后,如下图。
    new group complete

至此,已完成用户添加。

现在可以使用 "user1" 进行登录了。

设置技巧

  • 显示 用户 所在的组以及权限
    单击选择需要查看的 用户
    单击如下图中绿框标记的图标
    user relative

  • 显示 所包含的用户以及权限
    单击选择需要查看的
    单击如下图中绿框标记的图标
    group relative

  • 多个用户 同时添加到 多个组里
    先选择需要批量添加的用户
    再选择相应的组
    单击 Add Selected Users To Select Groups
    users to groups
    注意:如果选择的用户已经在选择的组里,则会出现报错。

服务器备份

  1. 确认没有用户进行任何操作

  2. 将dys目录中的所有文件和文件夹拷贝至目标目录

注意: 如果是windows系统,需要确保目标文件夹的root目录大小写敏感属性已打开。

命令参数

dy命令及说明

命令说明
add标记添加文件
change更改号的创建、编辑、删除和查询
changelist更改列表的信息
edit标记编辑文件
erase擦除路径
delete标记删除文件
find查找文件
hash计算本地文件哈希值
history查看文件历史
info查看服务器信息
lock锁定文件
login登录
logout登出
ls列出路径下的文件
pending待处理号的创建、编辑、删除和查询
pendinglist待处理号的信息
revert还原文件的修改标记
shelve临时存放文件的书架
status查看文件状态
submit提交
sync同步文件
unlock解锁文件
user用户的创建、编辑、删除和查询
group组的创建、编辑、删除和查询
workspace工作空间的创建、编辑、删除和查询
privilege权限的创建、编辑、删除和查询

示例

首先需要将dy的路径添加到环境变量, 添加教程参考 添加环境变量

路径表示

在DuiYing中,一般情况下, 如果路径以名称结尾,则表示文件,如 //arc/file。
如果路径以'/'结果,则表示文件夹,如 //arc/file/。

登录

输入dy可查看默认登录参数

C:\Users\test>dy
port -> 192.168.174.130:7000
user -> admin
workspace —> admin_workspace

如果没有默认登录选项则显示

no default login, please set DY_PORT and DY_USER variable.

设置登录参数
windows cmd

> set dy_port=192.168.174.130:7000
> set dy_user=admin
> set dy_workspace=admin_workspace

windows powershell

> $Env:dy_port="192.168.174.130:7000"
> $Env:dy_user="admin"
> $Env:dy_workspace="admin_workspace"

密码登录

> dy login -p

直接登录

> dy login

退出

> dy logout

服务器信息

> dy info

查看命令参数

> dy --help
> dy add --help

添加文件

> dy add //arc/file
> dy add //arc/dir/

编辑文件

编辑dir文件夹下, 所有以.exe为结尾的文件
-r参数后的内容是正则表达式

> dy edit //arc/dir/ -r .exe$

删除文件

> dy delete //arc/file

将文件添加到书架

将指定的文件添加到待定号2书架上

> dy shelve -a --path //Access/edit/prefs/userPrefs.mel //Access/edit/prefs/windowPrefs.mel --pending 2

查询书架上的文件

查新待定号2, 3, 12书架上的文件

> dy shelve -q --pending_list 2 3 12

获取书架上的文件

获取待定号2书架上的文件,--override参数表示覆盖本地文件

> dy shelve -g --path //Access/edit/prefs/userPrefs.mel //Access/edit/prefs/windowPrefs.mel --pending 2 --override

删除书架上的文件

删除待定号2书架上的指定文件

> dy shelve -d --path //Access/edit/prefs/userPrefs.mel //Access/edit/prefs/windowPrefs.mel --pending 2

提交文件

提交arc文件夹下正在标记修改的文件

> dy submit //arc/

查找

查找//路径下,所有包含"date"的文件

> dy find -n date -p //

计算本地文件哈希值

计算 D:/arc/file 的sha512的值

> dy hash D:/arc/file --sha512

计算 D:/arc/file 的hash的值,该值被DuiYing用于文件校验

> dy hash D:/arc/file --hash

查看文件历史

> dy history -f //arc/file

锁定正在修改的文件

> dy lock //arc/file

解锁

> dy unlock //arc/file

撤销

> dy revert //arc/file

列出文件

列出//目录下的文件

> dy ls //

列出//目录下的文件夹

> dy ls // --dir

列出//目录下的所有文件

> dy ls // --recur

查看文件状态

> dy status //arc/file

同步文件

同步 //arc/ 文件夹

> dy sync //arc/

强制同步 //arc/ 文件夹,会覆盖本地已修改的文件

> dy sync -f //arc/

同步readme文件到 change 1326的版本

> dy sync //arc/readme@1326

同步readme文件到第5个版本

> dy sync //arc/readme#5

工作空间

添加一个名称为a_project_workspace, 路径映射规则为 // --> ./ , 根目录为 D:/project/, 描述为 A workspace for a project 的工作空间

> dy workspace --add --name a_project_workspace --mapping "// --> ./" --root "D:/project/" --description "A workspace for a project"

修改a_project_workspace的描述为 new description

> dy workspace --edit --name a_project_workspace --description "new description"

查看工作空间

> dy workspace --query --name a_project_workspace

删除工作空间

> dy workspace --delete --name a_project_workspace

列出所有的工作空间

> dy workspace --list

管理员

擦除

擦除路径

> dy erase //Access/ -y

用户

添加用户
用户名为 user_a, 全名为 user_a, email为 user_a@email.com, 描述为 VFX member, 密码为 password, 添加到grp1组

> dy user --add --username user_a --fullname user_a --email user_a@email.com --description "VFX member" --password password --groups grp1

修改用户
修改user_a 的描述为 A new team member

> dy user --edit --username user_a --description "A new team member"

将 user_a 添加到 ass 组, support组

> dy user --edit --username user_a --groups :+ass,support

将 user_a 从 ass 组中移除

> dy user --edit --username user_a --groups :-ass

设置 user_a 只在 ass 组中

> dy user --edit --username user_a --groups :!ass

查看用户

> dy user --query --username admin

删除用户

> dy user --delete --username user_a

列出所有用户

> dy user --list

添加

> dy group --add --name grp1 --email grp1@email.com --description "a new group"

编辑

> dy group --edit --name grp1 --email grp1_t@email.com

查询

> dy group --query --name grp1

删除

> dy group --delete --name grp1

列出所有组

> dy group --list

权限

添加
为 grp1 组添加对路径 //arc/dir/ 的 写 权限, 注释为 permission for grp1

> dy privilege --add --group_name grp1 --permission Write --path //arc/dir/ --comment "permission for grp1"

编辑

将id为11的权限设置为 Read(id可以通过dy privilege --list查看)。

> dy privilege --edit --id 11 --permission Read

删除
删除id为11的权限设置项

> dy privilege --delete --id 11

查询

> dy privilege --query --id 11

列出所有权限

> dy privilege --list

dym模块

准备

导入模块

import dym

登录和注销

默认登录

dy = dym.DY.new_with_default()
dy.connect()

登录

dy.login(passwd)

指定登录

ip = '192.168.80.132:7000'
user = 'user_write'
password = 'password'
workspace = 'admin_workspace'
dy = dym.DY(ip, user, workspace, password)
dy.connect()

注销

dy.logout()

工作空间

创建工作空间

dy.workspace_add(name, root, mapping, desc, lock)

dy.workspace_add(
    'admin_workspace',
    'D:/work/',
    "// --> ./",
    "workspace description",
    False
)

编辑工作空间

dy.workspace_edit(name, new_name, root, mapping, desc, lock)

dy.workspace_edit(
    'admin_workspace', 
    desc='This is workspace for project user.'
)

删除工作空间

dy.workspace_delete(name)

查询工作空间

dy.workspace_query(name)

列出所有工作空间

dy.workspace_list(max_number, offset, descending)

for w in dy.workspace_list():
    print(w)

文件

标记添加

dy.add(path_list, rgx, pending)

# 添加 F:/DevTools/ 目录下的所有文件
dy.add(['F:/DevTools/'])
# 添加 F:/DevTools/ 目录下, 所有以 .png 为文件名结尾的文件
dy.add(['F:/DevTools/'], '.png$')

标记编辑

dy.edit(path_list, rgx, pending)

dy.edit(['F:/DevTools/'])

标记删除

dy.delete(path_list, rgx, pending)

dy.delete(['F:/DevTools/'])

添加到书架

dy.shelve_add(pending, path_list, rgx)

dy.shelve_add(21, ['//NoAccess/shelve/'])

查询书架上的文件

dy.shelve_query(pending_list, rgx)

dy.shelve_query([12, 13])

获取书架上的文件

dy.shelve_get(pending, path_list, rgx, shelve_override)

dy.shelve_get(pending=12, ["//Access/shelve/prefs/windowPrefs.mel"], shelve_override=True)

删除书架上的文件

dy.shelve_delete(pending, path_list, rgx)

path_list = [
    '//Edit/edit/prefs/mainWindowStates/startupMainWindowState',
    '//Edit/edit/prefs/markingMenus/menu_ChangePanelLayout.mel',
]
dy.shelve_delete(pending=12, path_list = path_list)

锁定文件

dy.lock(path_list, pending_list, rgx)

# 锁定文件
dy.lock(['//Char/2020/file'])
# 锁定文件夹
dy.lock(['//Char/'])

解锁文件

dy.unlock(path_list, pending_list, force, rgx)

# 解锁文件
dy.unlock(['//Char/2020/file'])
# 解锁文件夹
dy.unlock(['//Char/'])

文件状态

dy.status(path_list, rgx)

status = dy.status(['//Char/2020/'], '.png$')
for s in status:
    print(s)

同步文件

dy.sync(path_list, change_list, force, rgx)

files = dy.sync(['//Char/2020/'], force=True)

提交

dy.submit(path_list, desc, rgx, pending)

submit_files = dy.submit(['F:/DevTools/'], 'desc for submit files',)

撤销

dy.revert(path_list, pending_list, rgx)

revert_files = dy.revert(['F:/DevTools/'])
# 撤销待处理号16下的所有文件
revert_files = dy.revert([], [16])

历史

dy.history(file, max_number, offset, descending)

for h in dy.history('//Char/logo.png'):
    print(h)

擦除路径

dy.erase(path_list, rgx)

erase_info = dy.erase(['//Access/'])

erase_info['unable_to_delete_files'] 中包含的路径需要手动到服务器上删除。参考 擦除 章节。

查找

dy.find(name, path, include_deleted, rgx, max_number, descending)

# 查找 // 路径下的所有路径中包含'ToolsIcon'的文件
for f in dy.find('ToolsIcon', '//'):
    print(f)

文件列表

dy.ls(path_list, ls_dir, recur, include_deleted, rgx)

# 列出 '//' 文件夹及子文件夹下所有文件,包括已删除文件
for f in dy.ls(['//'], recur=True, include_deleted=True):
    print(f)

# 列出 '//' 文件夹及子文件夹下所有以 '.png' 为结尾的文件,包括已删除文件
for f in dy.ls(['//'], recur=True, include_deleted=True, rgx='.png$'):
    print(f)

# 列出 '//Char/' 文件夹下的文件
for f in dy.ls(['//Char/']):
    print(f)

# 列出 '//Char/' 文件夹下的文件夹
for d in dy.ls(['//Char/'], ls_dir=True):
    print(d)

待处理号和更改号

新建待处理号

dy.change_new(desc)

new_pending = dy.change_new()
print(new_pending)

编辑列表描述

dy.change_edit(change_list, desc)

change_desc = dy.change_edit([7, 11], 'new description for 7, 11')

删除待处理号

dy.change_delete(pending_list)

del_pending = dy.change_delete([1,2,3,4,5])

将文件转移到指定的待处理号

dy.pending(path_list, pendinglist, new_pending, rgx)

pending_files = dy.pending(['F:/DevTools/'], [], 18)

获取更改列表

dy.change_list(status, query_user, query_workspace, query_host, max_number, offset, descending)

# 待处理列表
pendinglist = dy.change_list(status=0)
# 更改列表
changelist = dy.change_list(status=1)

查询列表信息

dy.change_list_status(change_list)

change_status = dy.change_list_status([7,11])
print(change_status)

待处理号包含的文件

dy.pendinglist_query(pending_list)

pending = dy.pendinglist_query([10])
print(pending)

更改号中包含的文件

dy.changelist_query(change_list)

change = dy.changelist_query([7])
print(change)

用户

创建用户

dy.user_add(username, fullname, passwd, groups, email, desc)

dy.user_add('user1', 'user1_fullname', 'password', 'grp_write', 'user1@email.com', 'user1 description')

编辑用户

dy.user_edit(username, fullname, passwd, new_passwd, groups, email, desc)

# 更改用户密码
dy.user_edit('user_read', passwd='password', new_passwd='pp12345')

# 将user1添加到 'grp_write'和'grp_access'组
dy.user_edit('user1', groups=':+grp_write, grp_access')

# 将user1从grp_write组中移除
dy.user_edit('user1', groups=':-grp_write')

# user1仅在grp_write组中
dy.user_edit('user1', groups=':!grp_write')

删除用户

dy.user_delete(username)

查询用户

dy.user_query(username)

列出用户

dy.user_list()

for u in dy.user_list():
    print(u)

添加组

dy.group_add(grp_name, email, desc, groups)

dy.group_add("grp_write", 'write@emil.com', 'description for write permission', '')

编辑组

dy.group_edit(grp_name, email, desc, groups)

dy.group_edit("grp_access", 'grp_access@emil.com', 'description for access', '')

删除组

dy.group_delete(grp_name)

查询组信息

dy.group_query(grp_name)

列出所有组信息

dy.group_list()

权限

添加权限

dy.privilege_add(group_name, permission, path, comment)

dy.privilege_add('grp_read', 'Read', '//', 'read privilege for grp_read')

编辑权限

dy.privilege_edit(id, group_name, permission, path, comment)

dy.privilege_edit(2, 'grp_no_access', 'Write', '//', 'change comments')

删除权限

dy.privilege_delete_by_id(id)

dy.privilege_delete_by_id(3)

查询权限

dy.privilege_query_by_id(id)

dy.privilege_query_by_id(6)

列出所有权限

dy.privilege_list()

for p in dy.privilege_list():
    print(p)

服务器

查看服务器信息

dy.info()

附录

接下来的章节将添加一些相关的教程

添加环境变量

按下快捷键 win + r, 输入 sysdm.cpl, 按回车键(Enter)
单击 高级 选项卡, 单击 环境变量

env variable

env variable dialog

用户变量: 只有当前用户可以使用
系统变量: 所有登录到当前电脑的用户都可以使用

这里, 以 用户变量 为例进行说明

如果用户变量中, 不存在 变量为 Path 的项, 则需要单击 新建 变量名: Path 变量值: 此处填写dy所在的文件夹
env variable new
单击 确定 , 再单击 环境变量对话框的 确定 就可以添加成功了

如果用户变量中, 已存在 变量为 Path 的项, 则选择 Path变量, 单击 编辑 , 添加dy所在的文件夹就可以了
env variable edit

DuiYing软件许可协议

请在安装和使用软件前,先阅读以下许可协议。

安装、下载、运行或以其他方式直接或间接使用该软件, 表示您 接受并遵守本许可协议中的条款和条件(包括与软件相关的任何订单中包含的 任何条款、条件和限制)
如果您不接受并同意本许可协议中的条款、条件和限制,则请勿安装、下载、运行或以其他方式直接或间接使用该软件。
软件仅是被许可使用,而非出售。

许可授权

许可证分为免费许可证、评估许可证、学术许可证和商业许可证,默认状态下,软件将被授予免费许可证。 在您同意并接受本许可协议的条款、条件和限制的前提下,DuiYing向您授予有限的、不可再许可的、非独占的、不可转让的、全额支付的、基于时间 或永久的(根据购买时间或在许可证有效的前提下,许可证里保存的生成时间)许可证, 允许您
a. 为自己的直接内部业务,在许可证有效期内,安装和使用软件
b. 根据需要复制DuiYing软件,但仅限于存档目的,且每个副本都必须保留DuiYing软件的原始副本中包含的版权和所有权信息。

许可限制

每个授权都需要单独的许可证。
您不得直接或间接导致、指示、指导或允许任何第三方对软件进行以下行为
a. 共享使用任一类许可证
b. 逆向工程、反编译、出售、出租、租赁、制造、改编、创建衍生品或以其他方式修改或分发
c. 删除DuiYing软件本身或任何副本上的版权或所有权信息
d. 违反或规避DuiYing软件或本协议中规定的任何技术限制

定义

软件: 指DuiYing计算机软件的机器可读目标代码程序(包括但不限于dy, dys, dyui,dym)以及当时的印刷品,数字用户手册、说明,在线帮助文档和DuiYing提供的技术手册。

免责声明

DuiYing对按“原样”提供的软件产品不提供任何保证,没有任何形式的明示的或暗示的保证,包括但不限于任何适销性、非侵权或特定用途适用性的保证

责任限制

DuiYing在任何情况下均不对因使用软件造成的任何损害负责,包括但不限于利润损失,业务中断或信息丢失。
在任何情况下,DuiYing均不对数据丢失或间接、特殊、偶然、后果性或其他损害负责
DuiYing对软件的内容或其任何一部分不承担任何责任,包括但不限于其中包含的错误或缺陷、遗漏、诽谤、商标权、业务中断、隐私损失或机密信息的泄露。

软件保证

DuiYing Project保证软件按照DuiYing所提供的文档运行。如果遇到软件缺陷,并且经我们确认是软件导致的,我们会尽力修复。
对修复结果,我们不进行任何保证。

其他

DuiYing Project 版权所有
DuiYing Project 特此保留软件的所有权利
DuiYing Project 特此保留本许可协议未明确授予的软件的所有权利
DuiYing Project 保留对本协议解释和修改的权利

隐私政策

DuiYing将最大程度地保护用户的隐私。
DuiYing将收集仅限以下范围的信息,以便于向我们的用户提供更优质的产品和服务

  • 运行软件的主机的ip地址
  • 许可证信息
  • 购买许可证时所使用的邮件
  • 付款信息
  • 用户发给我们的邮件

信息的使用和保密

搜集的信息仅仅被用来验证许可证和提供服务。
我们不会将搜集的信息透露给第三方。

旧版本

v1.1.0


Windows

dy-v1.1.0-x86_64-pc-windows-msvc.7z
  sha256: a39aedb26797cd4fb12e2451811b7f40a09a426810ba37d04c7e36bfaa308212

dym-v1.1.0-cp311-none-win_amd64.7z -- Python 3.11.4
  sha256: 3a618b80f1443e4a26cb3a0ff23a37ac3ef2b0cb5c8b08f1ef2a072ae0410be3

dys-v1.1.0-x86_64-pc-windows-msvc.7z
  sha256: 4c25847938f15d19af62e840dbcdbd32cef96ec2f4314872ec8a585fdf94007b

dyui-v1.1.0-x86_64-pc-windows-msvc.7z
  sha256: c8cb8e8aa48af75160165c85ca00c9394042d3093761b341dd30009e52c9c70c

Linux

Debian 12 amd64 (GNU libc >= 2.34)

dys-v1.1.0-x86_64-pc-linux-gnu.tar.xz
  sha256: 4a7a02c2f57ead983c8d7cfa21195f0e705ed4e08957efe4c1d50e2efdc092f0

CentOS 7 x86_64 (GNU libc >= 2.17)

dys-v1.1.0-x86_64-pc-linux-gnu-glibc-2.17.tar.xz
  sha256: 8705723175a2085bab4345ce4e17d3d432fee4de47de1b6cd7d1488794987466

MacOS Apple Silicon (实验性支持, macOS Ventura 13.2.1)

dyui-v1.1.0-aarch64-apple-darwin.zip
  sha256: 3ed9f56147dec65a52b4b3923c1f2dbfe52b730791fcafad532f7c9b5e2b98c0

更新日志:

  • 添加dyui的Apple Silicon实验性支持。
  • 修复Pending和Submit面板有时显示乱序的问题。
  • 修复拖拽非英文字符路径无效的问题。
  • 添加书架功能。

v1.0.5


Windows

dy-v1.0.5-x86_64-pc-windows-msvc.7z
  sha256: e5a5890fac05bae0c1220379792ba80c189e4d60cc90a5c9d3d8eb31c820062b

dym-v1.0.5-cp311-none-win_amd64.7z
  sha256: e1dc7a99c150358776e1ccacf081344cc970e02bd5b7bb0ed5394a4c9bec7adf

dys-v1.0.5-x86_64-pc-windows-msvc.7z
  sha256: 4c433dba486926e474e7fd026e09ab1f132e72eec96577f4b8caf3f6b3887e4a

dyui-v1.0.5-x86_64-pc-windows-msvc.7z
  sha256: c99f531c63002c2134c4ffc9b1fecdf52485a7dac787c830bcff4ef0357a2f61

Linux

dys-v1.0.5-x86_64-pc-linux-gnu.tar.xz
  sha256: 1162ae91b8b43ebb4b60f81d94fd5fc03b1e1c5dd014d29a576a1d037791ab9a

更新日志:

  • 修复dyui刷新出错的问题。
  • dy和dym添加decompress命令,用于解压dys data中的文件。

v1.0.4


Windows

dy-v1.0.4-x86_64-pc-windows-msvc.7z
  sha256: 3577140358b3721ed88654186913cc185b5e1fc897a69c134b360b039352d705

dym-v1.0.4-cp311-none-win_amd64.7z
  sha256: 91b097b2b93628d4d85a71eeba04ae7fc6375b0a90507ab19b5b7a023252b906

dys-v1.0.4-x86_64-pc-windows-msvc.7z
  sha256: f05cd70040e8c04e11c42a9d1ee73cc7973e240f8f3eb3c392678abe0400c90c

dyui-v1.0.4-x86_64-pc-windows-msvc.7z
  sha256: 36307e13d25b3ebe7bc70489e7a192adb545d257ec0421b579ce8a6d296a36ef

Linux

dys-v1.0.4-x86_64-pc-linux-gnu.tar.xz
  sha256: 2acc614d895aa000fb5d7b77762a22132db55b7aa46e14590796796698221cf4

更新日志:

  • 修复翻译错误。
  • 添加擦除(Erase)命令。
  • 添加dyui字体偏好设置。

v1.0.1


Windows

dy-v1.0.1-x86_64-pc-windows-msvc.7z
  sha256: 73C666A6CED0F04A29BB59CE934A2B426ADF080A1A6C95312F77945255639F3E

dym-v1.0.1-cp311-none-win_amd64.7z
  sha256: C866436EBCD82E20334398B9943690C65664540C9567DA729C7A14CF8004729C

dys-v1.0.1-x86_64-pc-windows-msvc.7z
  sha256: 9262EE2C46EDA271DABD8193436503DBDBE3CFF1D5B6BA188CD25ECD69AE28E2

dyui-v1.0.1-x86_64-pc-windows-msvc.7z
  sha256: 43CBFAA21C37AEDCF3C337EF1ECCECF518CC3EE525EB4A5525D69057B913495E

Linux

dys-v1.0.1-x86_64-pc-linux-gnu.tar.xz
  sha256: 669F1A119DB43FE32BBBA9D2AD01EC01E1B4322BE4A8157353A264060CBE0BD6

更新日志:

  • 添加双击pending和change展开文件的功能。
  • 修复dyui按住ctrl键无法显示文件状态提示的问题。
  • 添加dys linux版(在Debian12中进行测试)。

v1.0

dys-v1.0-x86_64-pc-windows-msvc.zip
  sha256: BF2CB899548C50C941D1F527AD61656B5B8B882E12E1F0F0365ED31591B5CA62

dy-v1.0-x86_64-pc-windows-msvc.zip
  sha256: 8B858BA1B4757ACE8E4A398DC956A5653CB8E2573F83CEE96E1B135DC8E00802

dyui-v1.0-x86_64-pc-windows-msvc.zip
  sha256: FB24A47D7609D6DC3E3E7B3F1B229DCFEDC706D77DE282E2A9B6C14CCC1221AC

dym-v1.0.0-cp311-none-win_amd64.zip - Python3.11.4
  sha256: 42624A1F61A8F5843491D4DDA8A4802169F1FDB06CD94867298FBC689A319D36

更新日志:

  • 修复权限问题:Read组无法读取文件。
  • 修复导入dym出错的问题。
  • 整合gtk运行库到dyui。

v0.9.82

dys-v0.9.82-x86_64-pc-windows-msvc.7z
  sha256: 4FB933F7F5EBC03FC671978B36096CB3598407F183F5C273B62EEE1EBB9D5C5E

dy-v0.9.82-x86_64-pc-windows-msvc.7z
  sha256: 7B612597BE1BDD2A1E1DE7BD3CB5D095338FE088134F96C881F8F9FFDA1D2035

dyui-v0.9.82-x86_64-pc-windows-msvc.7z
  sha256: 85D924CF441BD42179CBB76BC99773EA5DB5DBEEF392F185AFCBC37807C080B2

dym-0.1.2-cp37-none-win_amd64.7z - Python3.7
  sha256: A3E63C6CEE9C63D2E7E44618A89C7FDD4F0F4DABFA3A7AF31567BBC58EFA1321

dym-0.1.2-cp311-none-win_amd64.7z - Python3.11.4
  sha256: FA49729CCBFD7657BDAA6AF82393AB8239867A731EF1D86BB44C285EF646ACA2

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z
  sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:

  • 添加DuiYing客户端Python库。

v0.9.80


dys-v0.9.80-x86_64-pc-windows-msvc.7z 下载
dys sha256: 4169C029ED8D58F1D9D9FAFFF91127D0B064FEE1ACAC8D446077D7E1BF5114AB

dy-v0.9.80-x86_64-pc-windows-msvc.7z 下载
dy sha256: 0A496401D8AF3A1417D68C64561AE31198862CEC8565EC0D9D79E2ACB826BDA3

dyui-v0.9.80-x86_64-pc-windows-msvc.7z 下载
dyui sha256: DE567FB12BB47E6D3E4A90C23AA6219165CE6451ED94B96676FA9854C93614E7

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:

  • 将显示文件的部件分为Arc(服务器文件)和Workspace(工作空间文件,即本地文件)
  • 修复工作空间路径转换错误。

v0.9.70


dys-v0.9.70-x86_64-pc-windows-msvc.7z 下载
dys sha256: 5FF1130CFDE22656318D16DF15BDC34AB8BCF054FE19731E69C0B30E0D239170

dy-v0.9.70-x86_64-pc-windows-msvc.7z 下载
dy sha256: 9884E4535644DC108F676969051884B0C48348528CD8182B6A9A0A11770DE738

dyui-v0.9.70-x86_64-pc-windows-msvc.7z 下载
dyui sha256: 1B063AE538609FEE6B7983907C940561B3778C2E34C4D6164E95432F1539A289

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:

  • 修复工作空间路径转换错误。
  • 移除Workspace面板中不需要的参数。
  • 完善Pending、Submit面板过滤项。
  • ls列出文件夹时,路径以'/'结尾。
  • 新增hash命令, 用于计算本地文件的哈希值。
  • 添加工作空间的教程。

v0.9.65


dys-v0.9.65-x86_64-pc-windows-msvc.7z 下载
dys sha256: 5E9104010B77DC9D892F774184524BD6DA2EEA36D7E15FE4E510DEE3E69672ED

dy-v0.9.65-x86_64-pc-windows-msvc.7z 下载
dy sha256: 1CF2FB3E3E364870A640646F9363106A32F323178F11FC210243FF386FD046A8

dyui-v0.9.65-x86_64-pc-windows-msvc.7z 下载
dyui sha256: B8124C79675EBCB9E6CE8ADE74CA83CFF84C7C5A0D876153F7E829B1CA16B3D8

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:

  • 修复一些命令行参数错误。
  • 更新了命令行的教程。

v0.9.62


dys-v0.9.62-x86_64-pc-windows-msvc.7z 下载
dys sha256: A94E6D8C12B097676CC16CB7F43CD6E1901A5DBBC99690B35CAFEE7C055B64B8

dy-v0.9.62-x86_64-pc-windows-msvc.7z 下载
dy sha256: DB4E7D955B7A28E14BE33E560C37184C153B0702742D9FAF7339529E439EEA8E

dyui-v0.9.62-x86_64-pc-windows-msvc.7z 下载
dyui sha256: 1FC348B6A05AE9D10A450BE6724B9047B3A40221F1FDE40DC46F844EC4E3991B

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:

  • group desc参数修复。
  • pending 命令行帮助修改。
  • 暂时移除openssl模块。

v0.9.60


dys-v0.9.60-x86_64-pc-windows-msvc.7z 下载
dys sha256: 5AEAEB715B6A01A6492648F3D54CB064C6F78CD85AF578437E962FEBDEB2BE29

dy-v0.9.60-x86_64-pc-windows-msvc.7z 下载
dy sha256: B1AB41CA100C92830AC57386F204BC4635072D2CC5B047D5E360B747FFC3AB58

dyui-v0.9.60-x86_64-pc-windows-msvc.7z 下载
dyui sha256: 87292355C68045DD1F4F9DCFBDF1B786BB92D0B99471BFCF77EF46D62E8A6272

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:

  • 修复Show In Arc命令一次只展开一个路径。
  • 修复修改文件时可能遇到的文件不存在,导致无法继续编辑的问题。
  • 修复dy一些命令参数错误。

v0.9.53


dys-v0.9.53-x86_64-pc-windows-msvc.7z 下载
dys sha256: 4D4FDF4925D43843E22285133ECDAB7211A21F689D4EE5C73E38EA150900B89A

dy-v0.9.53-x86_64-pc-windows-msvc.7z 下载
dy sha256: AC9F7D907280C9C3D719C2857EF5778C7B308D1ACE7CA06137D74A2FFA73FEF2

dyui-v0.9.53-x86_64-pc-windows-msvc.7z 下载
dyui sha256: 554DE289AEF46523F3D27CE6382F5D4E48371A15541A724B9A74FFA9A9721CC1

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:

  • 改善dyui运行时,出现界面卡顿,无响应的情况。
  • 修复dy一些命令的运行结果显示。

v0.9.50


dys-v0.9.50-x86_64-pc-windows-msvc.7z 下载
dys sha256: 0F156DF41534C49C006F437B550C35F91C3963824B1FBB7BD9A18420A93901D8

dy-v0.9.50-x86_64-pc-windows-msvc.7z 下载
dy sha256: B3A93373D275E22B5278F37FC90DFDFC16AC683C28A8F8AABA91033AD4D1C1CB

dyui-v0.9.50-x86_64-pc-windows-msvc.7z 下载
dyui sha256: 18CA3898743943075878E6262C12CE7D9E7475E98BA33074A7856B4BB9C5960B

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:

  • 提升dyui展开文件夹的速度。
  • 改善dyui界面搜索。

v0.9.42


dys-v0.9.42-x86_64-pc-windows-msvc.7z 下载
dys sha256: 853357CDD6EAA50DEDB137B617AA2459F7A850F759AFA1E961849722A1DCAECB

dy-v0.9.42-x86_64-pc-windows-msvc.7z 下载
dy sha256: 7C8E008CAE8DB16E4479E088C80932230D329F59EAF7EB957FA3667C5EC8B5DA

dyui-v0.9.42-x86_64-pc-windows-msvc.7z 下载
dyui sha256: 1268761FF8974586B1B003B9EE99DA3FFA148B7D57B7A767ABD72EB7694DFA40

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:
修复以下问题:

  • dy.exe 添加描述时,'\n'不能识别为换行。
  • 提升文件解锁速度(Unlock)。
  • dyui创建工作空间(Workspace)时,无法在描述中添加换行。

v0.9.35


dys-v0.9.35-x86_64-pc-windows-msvc.7z 下载
dys sha256: DAEDEE873CE096342F66A5ECE039DD80B0237D0D9647438053D3F771C7FC602A

dy-v0.9.35-x86_64-pc-windows-msvc.7z 下载
dy sha256: A6E21279B10CB0680380F5260E736543DE6755A49A2D09A5851565C2DF4125F9

dyui-v0.9.35-x86_64-pc-windows-msvc.7z 下载
dyui sha256: 80781CA01C3034592B1FAAC20352F6775FAD8180AD3D7CD0C6129F28B900A71E

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:
修复以下问题:

  • Revert大量文件时,dyui界面没有响应。
  • 提升同步文件速度。
  • 第二次添加文件时,提示报错。

v0.9.26


dys-v0.9.26-x86_64-pc-windows-msvc.7z 下载
dys sha256: 2B20BBB708394FD706D0C3E5697198B7DBC450DE2DB72F19F664A88739CE10E2

dy-v0.9.26-x86_64-pc-windows-msvc.7z 下载
dy sha256: D41C1F1D113248A3CC238FC11DC873C2F6B19AD034CC2241D28537A77B702587

dyui-v0.9.26-x86_64-pc-windows-msvc.7z 下载
dyui sha256: 413692727CC92BAEB627C73086FE324E3FCD6D6FE284790E81DAB6E1A5D1BF12

gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2 sha256: 19A1D21CD381B7E21384DC4C1B18A95DAE5C5B40C48781DDF820D629E6BAC0BA

更新日志:
修复以下问题:

  • 文件传输中断导致文件不可再次提交。
  • dy命令行修改用户时导致用户email和description属性丢失。
  • dy privilege将权限创建到不存在的组。
  • dy ls // --dir特别慢。
  • dyui添加大量文件时,导致界面无响应。
  • dyui同步文件时,单击取消导致dyui崩溃。

v0.9.16


dys-v0.9.16-x86_64-pc-windows-msvc.7z 下载
dy-v0.9.16-x86_64-pc-windows-msvc.7z 下载
dyui-v0.9.16-x86_64-pc-windows-msvc.7z 下载
gtk3-runtime-v2-x86_64-pc-windows-msvc.7z 下载

更新日志:

  • 更换文件压缩方法。
  • 完善dyui界面功能。

v0.9 beta


dys 0.9 beta 下载
dy 0.9 beta 下载
dyui 0.9 beta 下载
gtk3 runtime 下载
gtk3-runtime中包含gtk3的运行环境和openssl, 根据 https://github.com/wingtk/gvsbuild 进行编译的,你也可以自行编译。

价格




免费版商业版
价格050元/用户/月 或 500元/用户/年
用户数量2不限
管理员数量不限不限
dy命令行支持支持
Python支持支持
技术支持普通优先

问答

  • DuiYing版本控制软件是免费软件吗?
    DuiYing版本控制软件是商业软件,软件许可证分为 免费版商业版
    免费版 可以创建2个用户,没有其他限制。
    商业版 请联系 contact@duiying.io 进行咨询。

  • DuiYing版本控制是否提供永久使用许可?
    我们只提供月订阅或年度订阅的许可。 具体请参考页面 价格

  • DuiYing版本控制软件是否可以对外网开放?
    DuiYing目前采用明文传输,不建议对外网直接开放。
    可以使用VPN的方式来保证据数传输的安全。

  • 软件许可到期后,服务器还可以启动吗?
    软件许可到期后,服务器可以正常启动。服务器会变成只读状态,即从服务器获取文件不受影响。

联系我们

如您在使用中,遇到任何问题,欢迎与我们联系。

联系方式

邮箱
contact@duiying.io

微信
duiying-vcs