DuiYing版本控制介绍
更新
版本更新至 1.2.0。
DuiYing是一款集中式的版本控制软件,从文本到图片,你可以使用它对任意类型的文件进行版本控制。
集中式,意味着所有文件的历史版本都存放在服务器上。
如果你想修改一个文件,需要先从服务器上获取文件到你自己的电脑上,然后修改文件,再上传到服务器上。
通过DuiYing,你可以:
- 添加、编辑和删除文件
- 查找文件
- 查看文件的历史版本
- 查看项目的任一阶段
- 管理文件的访问权限
- 使用dy命令行进行流程管理
- 使用python自定义文件流程
软件特点
-
简单易学
我们提供友好的文档、视频和技术支持,让您的团队可以轻松地掌握软件的使用。 -
集中式的版本控制
所有的文件历史版本都会被保存到服务器上,方便运维管理。 -
区分大小写
即使服务器运行在windows系统上,DuiYing的文件路径都是区分大小写的。 -
支持非英文路径
采用utf8编码,文件路径支持非英文字符。 -
精确到文件的权限管理
你可以对任意的文件或者文件夹设置访问权限。 -
节省服务器空间
在服务器上,内容相同的文件只保存一份,减少空间占用。
本教程将全面介绍DuiYing版本控制软件的功能,内容清晰易懂,适合学习参考。
功能预览
在图片上右击,选择"在新窗口打开",可以查看更清晰的动图。
或按住 Ctrl, 滚动鼠标滚轮调整网页缩放。
登录
添加文件
编辑文件
删除文件
获取历史文件
视频教程
介绍
服务器设置
客户端下载和安装
登录
界面更新
添加文件
编辑文件
删除文件
锁与解锁
还原
同步文件
用户、组和权限设置
下载说明
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 安装
- 解压 dyui-*-x86_64-pc-windows-msvc.7z 到安装目录, 建议安装在 %localappdata% 目录下。
- 双击
dyui/bin/dyui.exe
运行程序。 - (可选)创建
dyui/bin/dyui.exe
的快捷方式到桌面。
注意
- 如果程序被安装在需要管理员权限的目录(例如“C:\Program Files”),则需要 以管理员身份运行
dyui.exe
- 如果运行dyui遇到
VCRUNTIME140_1.DLL was not found
报错, 需要安装vc++库,官方安装连接
The Visual C++ Redistributable for Visual Studio 2015-2022
dym 安装
- 安装 python3.11.4。
- 下载
dym-*-cp311-none-win_amd64.7z
并解压,在命令行运行pip install dym-***-win_amd64.whl
。
dy 安装
- 将
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/ 目录下。
-
下载
dys-v1.2.0-x86_64-pc-linux-gnu.tar.xz
。 -
切换到root。
su -
- 创建 /opt/dys/ 文件夹。
mkdir -p /opt/dys
- 将
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/
- 进入/opt/dys, 添加可执行权限。
cd /opt/dys
chmod u+x dys
- dys初始化,添加管理员名称和密码。
为了安全, 管理员的密码建议15位以上, 需要有一定的复杂度(比如,密码同时包含字母大小写,数字和特殊符号等, 密码尽量保持随机性, 不夹带有意义的单词或数字
./dys init
- 添加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
- 重新加载systemd。
systemctl daemon-reload
- 添加开机启动。
systemctl enable dys
- 启动dys服务, dys默认监听端口为
7000
。
systemctl start dys
- (可选)配置dys, 参数请参考 配置文件。
vi /opt/dys/dys.cfg
- 确认dys运行状态。
systemctl status dys
- 如果安装了防火墙,需要开放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.exe, 此时程序将会生成一些文件夹, 如下图
文件夹 | 作用 |
---|---|
data | 存放保存到服务器上的文件数据 |
license | 存放license文件 |
log | 存放dy服务器日志文件 |
root | 存放文件路径, 此文件夹需要区分大小写 |
由于windows存在路径长度限制, data和root文件夹都会生成很长的路径,
所以简短的安装路径有助于避开路径过长的问题.
设置root文件夹,使其可以区分大小写
Windows系统默认情况下,文件或文件夹是大小写不敏感的,需要手动开启
按下快捷键 Win + r
, 输入 appwiz.cpl
, 然后按回车键
单击左上角的启动或关闭 Windows 功能
, 在弹出的对话框中, 找到并
勾选 适用于Linux的Windows子系统
, 单击 确定 并重启系统。
使用快捷键 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 目录。
命令执行成功, 则如下图, 显示已启用目录的区分大小写属性
dys初始化
按住Shift, 在dys文件夹空白处右击, 选择 "在此处打开Powershell窗口"
输入 .\dys.exe init
进行初始化, 并设置dy管理员账户的用户名和密码
此处, 我们设置用户名为 admin, 密码为 p
此处的用户名和密码只是简单设置
在实际项目应用中, 管理员用户名可以是任意名称(由字母、数字或下划线组成, 以字母或下划线开始), 为了安全, 管理员的密码建议15位以上, 需要有一定的复杂度(比如,密码同时包含字母大小写,数字和特殊符号等, 密码尽量保持随机性, 不夹带有意义的单词或数字)。
设置完毕后, 需要再按一次回车键完成
启动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_root | root文件夹,用于存放文件指针,此文件夹中需要区分大小写 |
hash_data_root | 用于存放文件 |
login_expired_time | 登录有效期,单位是分钟,过期将需要重新登录 |
password_min_length | 密码最低长度,值若为0,则没有长度限制 |
登录
运行 dyui\bin\dyui.exe
, 输入 Server 和 User, 如下图
Server 为dys服务器的地址
user 为上一节中, 初始化dys时所创建的管理员
-- 如何查看服务器地址
到运行dys服务的电脑上,按Win + r
, 输入cmd
, 然后按回车键
在命令行窗口输入> ipconfig
即可查看服务器ip地址
由于是第一次登录,所以我们需要创建 工作空间(Workspace)
-- 什么是工作空间(Workspace)
工作空间(Workspace)就是定义了 dy路径 和 本地路径 转化的规则
例如, 文件A,
在dy上的路径为 //arc/files/文件A
在本地的路径为 C:\files\文件A
当我们从服务器上获取 //arc/files/文件A 到本地时,就需要将服务器路径 //arc/files/文件A 转化为本地路径 C:\files\文件A
这两个路径的转化规则,就是由工作空间(Workspace)决定的
- 单击 Workspace 参数框右侧的图标
此时需要输入登录密码, 输入上一节中设置的密码, 然后按回车即可
- 在 Select Workspace 对话框空白处右击,选择New, 创建工作空间
- 在弹出的对话框中,设置 Workspace Name 为 admin_workspace,设置 Workspace Root 为需要进行文件管理的目录, 设置完成后,单击 Apply And Close 就可以新建完成。
Workspace新建完成后,在Select Workspace对话框中就可以看到刚刚新建的workspace,如下图
选择 admin_workspace, 然后单击 OK
经以上步骤,工作空间就会被添加到登录界面的 Workspace 选项中
勾选 Set as default(设置为默认),这样下次启动dyui
, 将默认显示此次的登录信息
单击 Login 登录
界面语言
dyui目前支持中文和英文界面。
"en" 为英文
"zh" 为中文
可以通过 "编辑(Edit)" -> "偏好(Preferences)", 对字体进行设置。
经测试,以下字体对中文支持比较友好:
Serif Normal
Yu Gothic UI Normal
文件操作
在左侧目录树中,包含 Arc 和 Workspace 两块面板
Arc 显示的是服务器上的文件
Workspace 显示的是本地电脑上的文件
DuiYing目前包含以下文件操作
- Add(添加文件)
- Edit(编辑文件)
- Delete(删除文件)
这些操作只是通知dy服务器,你正在对文件进行修改,服务器会对你操作的文件打上相应的标记。
在你Submit(提交)之前, 服务器上的文件版本不会更改。
现在,请先把需要进行版本控制的文件,拷贝到我们在上一节设置的 Workspace Root 目录下,接下来,我们将对文件进行 添加、编辑 和 删除 操作
添加文件(Add)
右击需要添加的文件或文件夹,选择添加(Add...)
在弹出的对话框中,单击右下角的 OK .
若添加成功,则显示如下
不过这仅仅是标记添加,如果想提交到dys服务器,还需要按下面的步骤进行操作
右击刚刚被标记的文件或文件夹,选择提交(Submit...)
在弹出的对话框中,添加针对此次提交的描述,然后单击Submit(提交)按钮,等待提交完成
提交成功后,图标变化如下
当前图标表示 本地已有版本为最新版.
上图中右侧的 1|1 , 左侧的1表示本地拥有的版本,右侧的1表示该文件在服务器上的版本数量。
编辑文件(Edit)
编辑只能操作服务器上已有的文件
右击文件或文件夹,选择编辑(Edit...)
在弹出的对话框中,单击右下角的 OK .
若编辑成功, 则显示如下图, 此时你就可以修改文件了
修改文件完成后, 到dyui界面, 按 F5 刷新界面, 如果dyui检测到文件被修改, 则会把文件标记为深色, 如下图
右击文件或文件夹,选择 提交(Submit...)
在弹出的对话框中,添加针对此次提交的描述,然后单击 Submit(提交) 按钮,等待提交完成
提交成功后,图标变化如下
此时,我们注意到文件后面的版本信息变成了 2|2, 即该文件在服务器上有两个版本,本地版本为第2版
有时, 你可能会在文件图标的右侧看到修改的标记, 像下图这样
这说明这些文件正在被别人修改。
按住 Ctrl 键, 然后将鼠标放到文件上面, 停留2秒左右, dyui就会显示正在编辑该文件的用户
dy是允许两个或两个以上的人同时编辑文件的, 但提交的时候只能保留一个人的修改。
例如, 你和 用户A 在同时编辑一个文件, 如果 用户A 先提交, 然后你再提交, 此时该文件的最新状态仅会保留你提交的修改, 而 用户A 提交的修改将会变成历史版本。
如何避免这种编辑冲突, 请参考 锁(Lock)
删除文件(Delete)
删除只能操作服务器上已有的文件
右击文件或文件夹,选择删除(Delete...)
在弹出的对话框中,单击右下角的 OK .
此时,如果本地文件与服务器一致, 则本地文件会被删除, 显示如下
如果本地文件与服务器不一致, 则本地文件会被保留。
右击文件,选择提交(Submit...)
在弹出的对话框中,添加针对此次提交的描述,然后单击Submit(提交)按钮,等待提交完成
提交成功后,如果需要查看已删除的文件需要激活 显示已删除文件(show deleted files)。
此时,我们注意到文件后面的版本信息变成了 0|3, 即该文件本地没有版本信息, 在服务器上有3个版本。
删除操作并不会真正删除文件,只是新增了一个处于删除状态的版本。
重命名
目前DuiYing没有直接的命令来重命名。
可以通过 删除(Delete)和添加(Add)来完成重命名操作。
书架(Bookshelf)
有时候,你需要把文件共享给别人,但又不想影响服务器上的文件版本,此时,你可以用书架功能。它会把文件放在一个临时的位置,方便共享。
你可以通过“上架(Shelve)”将文件放到书架上,也可以通过“下架(Unshelve)”将文件从书架上删除。
别人可以通过“获取(Get)”来下载书架上的文件。
接下来,让我们一块看一下如何进行上述操作。
上架(Shelve)
在“待定”面板中,每个待定号都会包含一个书架,如下图。
你可以将“档案”或“工作空间”里的文件拖拽至“书架”进行上架。
也可以将待定号中的文件拖拽至“书架”进行上架。
如果想上架整个待定号中的文件,需要右击待定号,选择“上架”。
在上架的对话框中,可以通过“正则表达式”来过滤上架的文件。
“上架”仅会将本地的文件上架,如果本地文件不存在或读取失败,则会出现如下警告信息,不会上架。
用户需要拥有Edit权限,才可以上架文件。
获取(Get)
你可以通过找到书架所在的待定号,选择单个文件进行获取,或者选择“书架”来获取书架上的所有文件。(右击图像在新窗口打开会更清晰)
如果想查看书架上的文件在档案中的路径,则需右击文件,选择“在档案中显示”。
如果想快速找到待定号,可以使用菜单 “编辑” -> “跳转到书架”。
如果本地文件已存在,则需要勾选对话框中的“覆盖”选项才可以获取成功。
用户需要对路径拥有Read权限,才可以获取。
下架(Unshelve)
如果你想停止共享书架中的文件,可以通过“下架”来删除书架中的文件。
在书架中,可以选择文件进行下架,
也可以右击“书架”,下架当前书架中的所有文件。
锁(Lock)
当你标记添加,编辑或删除文件后,如果不想文件被别人提交,则需要锁上文件
文件被锁后,只有锁上文件的人用户可以提交这些文件
一个文件, 在标记添加、编辑或删除之后, 提交之前, 才可以上锁。在提交到服务器后, 文件会自动解锁。
右击文件或文件夹,选择上锁(Lock)
完成后,文件左下方会添加一个锁的图标
解锁(UnLock)
右击文件或文件夹,选择解锁(Unlock)
完成后,文件左下方锁的图标将会去除
还原(Revert)
还原(Revert)操作将取消文件的添加、编辑和删除标记以及锁。
选择文件或文件夹,右击,选择 还原(Revert)
完成后,标记被取消
在pending上右击可以选择 Revert if unchanged, 相应的pending列表中,没有被修改的文件会被 还原(Revert) 。
与左侧的文件树相比,Revert of unchanged 检测文件是否更改会更加可靠。
移除本地文件(Remove Local Files)
移除本地文件(Remove Local Files)将会删除本地文件,服务器上的文件不受影响
选择文件或文件夹,右击,选择 移除本地文件(Remove Local Files)
移除完成后,本地的文件将会被移除
同步文件(Sync Files)
同步文件(Sync Files) 可以把dy服务器上的文件获取到本地
选择需要获取的文件或文件夹,右击,选择同步最新文件(Sync Latest),即可把文件的最新版获取到本地。
右击文件或文件夹, 选择 Open Path, 会打开并选择路径
如果你需要获取特定的版本,可以在右击后,选择 Sync...,在弹出的对话框,#
后面的输入框内填上需要获取的版本号,然后单击Sync同步文件
在Sync Files...对话框中
#
表示引用版本的序号
@
表示引用更改(change)号
有关更改号的内容,请查看 pending and change
如果dyui检测到本地文件被修改, 或者本地文件被手动删除(不是使用 移除本地文件(Remove Local Files) 删除的),同步文件将不会获取文件,此时你可以通过 Sync Files... 操作,在弹出的对话框中勾选 Force ,这样当你单击Sync按钮后,dyui会强制同步本地文件到你指定的版本, 同时本地文件会被 覆盖
待处理(pending) 和 更改(change)
dy将会用一个数字来记录你每一次对文件的修改
pending 用来组织你正在修改的文件
change 用来记录你每一次提交到dy服务器的修改
接下来我们将通过一个例子来说明pending和change的使用
比如你今天收到一个任务需要上传5张图片和一份文件, 结构如下图
接下来开始添加,先选择 图片pic_01.png ~ pic_05.png,右击,选择添加(Add...)
在弹出的对话框中单击OK后,在待处理(pending)面板会自动创建一个待处理号(pending number),单击左侧的展开按钮,你会发现刚刚添加的文件都会组织在这个号码里
接着继续添加文件,右击 "文件.txt",选择添加(Add...),在弹出的对话框中,pending选择刚刚新建的待处理号,也就是包含我们刚刚添加的5张图片的待处理号,单击OK
此时你会发现"文件.txt"和刚刚的5张图片在同一个待处理号中
接下来就是提交(Submit...)
右击待处理号 11 ,选择提交(Submit...),在弹出的对话框中,填写针对这些文件的描述,"5张图片和一份文件",单击OK,等待提交完成
这样,dy将会用一个唯一的更改号来记录此次修改。如果想要查看更改号,单击 view,选择 Submit,就可以找到你刚刚提交的内容。
此时,你就可以发邮件通知,"任务完成了,更改号是 11 ".
此时, 其他人可通过以下步骤查看你的提交
单击菜单 View -> Submit ,打开 Submit面板。
将 Filter 后的选项改为 User, 单击右侧的 刷新 按钮
此步骤是用来过滤Submit结果的。
由于此处 User 为空,所以会查看所有人的提交。
如果 User 为"admin",则仅会查看"admin"的提交。
右击更改号,选择 View Change... , 就可以查看更改号的相关信息
在 Submit 面板中,如上图,红色三角表示当前登录用户的提交,蓝色三角表示其他用户的提交。
待处理号和更改号不一定总是相同的。
查看已提交的更改号,需要到通过菜单 View --> Submit ,在 Submit 面板下查看。
如果更改号顺序错乱,可单击 Filter User 下方的 change 对更改号进行排序。
如果想同步到本地,单击 Sync,就可以获取此次更改的文件, 勾选 Force 则会覆盖本地文件
查找(Find)
单击菜单View -> Find,打开查找面板
输入需要查找的范围和关键字,按回车键(Enter)或单击右侧查找图标,就可以开始查找了
Find Path 查找路径,路径越精确,查找速度越快
Find Name 需要查找的关键字
历史(History)
单击菜单View -> History, 打开历史面板
单击需要查看历史的文件,就可以显示文件的历史版本了
回滚(Rollback)
目前duiying并没有直接的命令来回滚历史,但可以通过以下步骤来回滚历史。
回滚文件历史
假设文件file.log有5个版本,我们需要将其第3版变为最新版本。
如果文件的最新版不是删除状态:
- 获取file.log文件的第3版。
- 将本地file.log文件更名为file_3.log(任意文件名都可以,只要不和当前文件夹下的其他文件名冲突)。
- 获取file.log文件至最新版。
- 编辑(Edit)文件。
- 删除本地的file.log文件,将file_3.log改名为file.log。
- 提交(Submit)file.log文件,并在提交对话框的描述中添加类似"回滚至版本3"的说明。
如果文件的最新版是删除状态:
- 获取file.log文件的第3版。
- 将file.log文件更名为file_3.log。
- 获取file.log文件至最新版。
- 将file_3.log改名为file.log。
- 添加(Add)文件。
- 提交(Submit)file.log文件,并在提交对话框的描述中添加类似"回滚至版本3"的说明。
回滚项目历史
假设 //project/ 最新提交号为1000,对应本地project文件夹,需要回滚到提交号为900的状态。
- 删除(Delete)//project/, 然后提交(Submit),并删除本地的project文件夹。
- 强制获取//project/至900。
- 将本地project文件夹改名为project_900。
- 获取//project/至最新状态。
- 将project_900改名为project。
- 添加(Add) //project/目录并提交,在提交对话框的描述中添加"回滚至提交号900"的说明。
工作空间
工作空间是用来将服务器的路径对应到本地的路径, 一个工作空间可以被多人在不同的电脑上使用。
通过工作空间,你可以:
- 制定服务器路径到本地路径的转化规则
- 忽略不需要的路径
新建工作空间
- 单击菜单 View -> Workspace, 打开工作空间的面板。
- 在工作空间的空白处右击,选择 New, 在弹出的对话框填写相应的内容。
Workspace Name 设置工作空间的名称。
Workspace Root 设置工作空间的根目录,设置完成后,所有从服务器上获取的文件都会在这个文件夹内。
Mapping 设置服务器路径与本地路径的对应关系。
Description 设置工作空间的描述。 - 单击 Apply 或 Apply 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)"。
如下图,其中绿线标出了用户可以自行修改的部分,包括密码、邮件和描述。
如果用户修改了密码,则需要重新登录。
管理员
DY可以进行用户、组和权限的管理。
接下来,我们将会创建一个用户 "user1", 并且让其可以对路径 "//pictures/" 进行读(获取文件到本地)和写(修改服务器文件)。
创建步骤:
-
创建组 pic (组的名称可以根据需要修改)
由于dy是通过组进行权限设置的,所以需要先新建一个组。 -
设置 pic 组的权限
-
创建 user1,并加入到 pic 组
在dyui界面, 通过菜单 User -> Admin 打开管理界面
日志
dy, dyui, dym, dys在运行过程中会产生日志。
程序 | 日志文件名 | 路径 |
---|---|---|
dy | dy.log | install_dir/log/ |
dyui | dyui.log | install_dir/log/ |
dym | dym.log | %appdata%/dy/ |
dys | dys.log | install_dir/log/ |
说明:
install_dir 为程序所在的路径。
随着时间的推移, 日志文件会越来越大, 建议定期备份或删除。
dys.log日志记录了文件路径和data目录中文件的对应关系,格式如下
INFO file-hash: //NoAccess/projects/dev.proj -- 63d9ec225712be80c7ea8e9238ac25d27c308335b0d189224751e981d0ecb13c7bcba1c14c47252ef3309a05db2228b27f309ccceabc95c844a4add80029c340bf
建议定期备份, 以便于数据恢复。
注意:
在删除日志后,需要 重新启动程序 来生成日志文件。
如果在程序运行时删除日志文件,则在程序重新启动之前,将不会生成日志文件。
擦除(Erase)
注意: 擦除(Erase)将会完全删除路径及路径下所有文件的历史,并且无法恢复。
在档案(Arc)面板中选择需要擦除的路径,可以选择多个路径,单击菜单"编辑"(Edit) -> "擦除"(Erase)。
在弹出的对话框中,勾选"确认擦除"(Confirm Erase),单击"擦除"(Erase)。
擦除后,路径以及路径下的所有文件的历史都会被永久删除。
如果遇到"擦除错误",如下图。
这是因为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
。
创建组
-
在Group区域右击,选择 New Group。
-
在弹出的对话框中,填写如下信息,然后单击 OK, 组创建完成。
设置权限
-
新建权限
在最右侧一栏右击, 选择 New Permission。
-
填写如下信息, 单击 OK 完成创建。
Group : 将权限添加到组, 单击右侧列表按钮可以选择组
Permission : 权限
- NoAccess 没有权限
- Access 可以看到路径
- Read 可以获取路径文件
- Edit 可以标记修改文件
- Write 可以提交
- Admin 可以进行用户、组和权限的管理
以上权限, 下一级将会包含上一级的权限
比如,Edit
权限包含Read
、Access
和NoAcess
的权限
也就是说, 如果一个组是Edit
权限, 那么这个组也可以看到文件路径, 获取路径下的文件
Path : 权限所对应的路径
DY对路径的约定:
文件夹以 '/' 作为结尾, 否则为文件
例如
//arc/abc 表示 //arc/abc文件
//arc/abc/ 表示 //arc/abc文件夹
Comment : 权限注释
- 权限创建完成,并且权限被添加到 pic 组。
创建用户
-
在User区域右击,选择 New User。
-
在弹出的对话框中,填写如下信息,然后单击 OK, 创建完成。
单击Group参数右侧的图标,可以从列表中选择组。
添加完成后,如下图。
至此,已完成用户添加。
现在可以使用 "user1" 进行登录了。
设置技巧
-
显示 用户 所在的组以及权限
单击选择需要查看的 用户
单击如下图中绿框标记的图标
-
显示 组 所包含的用户以及权限
单击选择需要查看的 组
单击如下图中绿框标记的图标
-
将 多个用户 同时添加到 多个组里
先选择需要批量添加的用户
再选择相应的组
单击 Add Selected Users To Select Groups
注意:如果选择的用户已经在选择的组里,则会出现报错。
服务器备份
-
确认没有用户进行任何操作
-
将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)
单击 高级 选项卡, 单击 环境变量
用户变量: 只有当前用户可以使用
系统变量: 所有登录到当前电脑的用户都可以使用
这里, 以 用户变量 为例进行说明
如果用户变量中, 不存在 变量为 Path 的项, 则需要单击 新建
变量名: Path
变量值: 此处填写dy所在的文件夹
单击 确定 , 再单击 环境变量对话框的 确定 就可以添加成功了
如果用户变量中, 已存在 变量为 Path 的项, 则选择 Path变量, 单击 编辑 , 添加dy所在的文件夹就可以了
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 进行编译的,你也可以自行编译。
价格
免费版 | 商业版 | |
---|---|---|
价格 | 0 | 50元/用户/月 或 500元/用户/年 |
用户数量 | 2 | 不限 |
管理员数量 | 不限 | 不限 |
dy命令行 | 支持 | 支持 |
Python | 支持 | 支持 |
技术支持 | 普通 | 优先 |
问答
-
DuiYing版本控制软件是免费软件吗?
DuiYing版本控制软件是商业软件,软件许可证分为 免费版 和 商业版
免费版 可以创建2个用户,没有其他限制。
商业版 请联系 contact@duiying.io 进行咨询。 -
DuiYing版本控制是否提供永久使用许可?
我们只提供月订阅或年度订阅的许可。 具体请参考页面 价格 -
DuiYing版本控制软件是否可以对外网开放?
DuiYing目前采用明文传输,不建议对外网直接开放。
可以使用VPN的方式来保证据数传输的安全。 -
软件许可到期后,服务器还可以启动吗?
软件许可到期后,服务器可以正常启动。服务器会变成只读状态,即从服务器获取文件不受影响。
联系我们
如您在使用中,遇到任何问题,欢迎与我们联系。
联系方式
邮箱
contact@duiying.io
微信
duiying-vcs