iSoftBook版本管理概述
1.Git HTTP
程序代码开发通常检出整个代码系统,采用并行修改、合并的工作模式。Git的分布式模型、轻量级分支和简单合并,适合程序代码等轻量级文本文件的高效率版本管理。
iSoftBook为每个项目内置集成和提供Git HTTP服务器,支持与Sourcetree、IntelliJ IDEA、Jenkins等集成访问和持续集成服务。

2.Git LFS
Git适合程序代码等文本文件版本管理。Git仓库中存储二进制大文件,则仓库体积会快速膨胀。
Git是分布式版本控制系统,因此克隆和拉取版本库时,需要下载仓库的完整数据,导致大量数据下载,花费大量时间并占用大量本地空间,Git性能迅速下降和恶化。
据此,Atlassian、GitHub等开发了Git扩展:Git LFS(Large File Storage),增强Git处理大文件的能力。Git LFS通过将仓库中的大文件替换为微小的指针(pointer),并在LFS服务器上分离存储大文件。 Git LFS通过延迟下载大文件以减少大文件的影响,即在clone或fetch过程中并不下载大文件,仅在checkout到工作区的时候才会真正去下载所需的大文件。
iSoftBook针对每个项目代码仓库,零配置、内置实现Git LFS,改善Git处理大文件的性能。

3.Git Cloud
Git LFS等扩展支持大文件版本化,适合MB级、代码紧密耦合、数量较少大文件版本管理。但受限于Git LFS的存储体系、传输协议和对象存储服务(OSS)机制,Git LFS对于百兆级、千兆级大文件版本化处理仍存易用性、空间和性能上的挑战,主要表现在:
- chekout一个包含大量、大体积文档的版本,从Git LFS服务器下载仍需花费大量时间。
- Git LFS服务器基于文件内容和其SHA-256签名进行存储,难以实现版本压缩与增量存储,Git LFS服务器体积膨胀更改。
- 本地与Git LFS服务器间的传输协议脆弱,现在的Basic传输适配器难以稳定、高速上传和下载大文件。
二进制文件如Office文档、视频文件、图像、3D模型、游戏资产、程序库和构建产物、机器学习数据集与大模型等,不适合分支、合并、差异比较等版本管理操作。 二进制文件创作,通常是从大量文档中检出一个或少量二进制文档、采用锁定修改的工作模式。
据此,iSoftBook提出和实现Git cloud版本管理架构,基于云端共享的Git仓库和工作区,利用浏览器实现远端管理与操作,实现二进制大文件、超大文件的版本化管理。

iSoftBook Git Cloud支持单文件进行修改、共享和版本处理,不要checkout完整版本,从而有效提升了大文件、超大文件处理性能。其服务特点:
- 基于在线文档,每位用户、每项资产、每个项目都内置提供Git Cloud服务。
- 基于分块、续传、重试、异步、零拷贝、非阻塞、多线程等技术,增进大文件处理性能。
- 基于压缩和增量存储,缩减版本库空间体积。
- 支持单个大文件、超大文件的加锁、检入和检出。
- 充分共享,文件通过确认后方提交而形成新版本,避免了因文件共享而提交,减少版本数量,缩减版本库空间体积。
- 基于目录的修改提交。
4. Git Gallery
Git Gallery是支持Git Cloud的大文件服务机制。在HTML在线文档、API文档、代码评审、任务看板 等编辑中,用户可以复制大文件,并通过CTRL+V粘贴的简单方式,直接把大文件存入Git Gallery,并生成其超链接进行访问。 该方式适合不需要放入Git文件系统、但需要通过在线文档访问并进行版本化管理的大文件。其取代了供IT专业化人员使用的Git LFS进行大文件管理, 同时突破了Git LFS的协议限制,支持高性能处理超大文件。
5.SVN Cloud
SVN能够实现目录版本化,提供锁定机制,能够追踪文件、目录的复制与重命名,具有高性能的二进制文件存储与处理机制。同时考虑遗留SVN系统的迁移。据此,iSoftBook实现了SVN Cloud,即底层基于SVN实现透明的云端版本处理。

6.Git Lock
iSoftBook了实现Git LFS Locking API,能够对Git LFS和Git Cloud中的大文件进行锁定,支持锁定-修改-解锁的文件修订方式,结合协同编辑、自由修改等方式, 提供自由、灵活的文件修订机制。
在线文档版本管理
iSoftBook平台为用户、资产和项目提供在线文档系统,内置Git Cloud或者SVN Cloud版本库,提供大文件优化传输机制,高性能支持二进制文件和大文件版本化管理。iSoftBook实现了云端Git与SVN版本库和工作区,简化了在线文档及其版本化管理操作。
- 显示文件变更状态:A-新增,M-修改,D-删除,R-替换等。
- 显示文件锁定信息:是否锁定、锁定人、锁定时间。
- 执行文件锁定或解锁。iSoftBook实施任何用户能够解除锁定的策略,锁仅仅作为用户之间进行文件独占修改的一种提示机制。
- 提交当前目录变更,形成新版本,提交自动解除文件锁定。
- 浏览特定文件修订历史。

程序代码版本管理
iSoftBook为每个项目提供Git代码仓库,提供Git HTTP访问协议,支持与Sourcetree、IntelliJ IDEA、Jenkins等集成访问。

- Git仓库HTTP URL,基于平台账号集成访问。
- Git仓库分支和标签浏览
Git LFS:大文件存储
Git LFS(Large File Storage, 大文件存储)是 Atlassian、Github等开发的一个 Git扩展,实现 Git 对大文件的支持。
Git LFS可以把音乐、图片、视频等指定的文件存在 Git 仓库之外,而在 Git 仓库中用一个占用空间 1KB 不到的文本指针来代替文件的存在, 从而减小Git服务器和本地仓库的体积,实现大文件checkout时懒加载,提升Git仓库克隆和拉取速度,避免Git仓库中充满大文件而导致的性能损失。
Git LFS受其体系架构、存储机制和传输协议限制,支持MB级较大文档的版本管理。
iSoftBook项目Git代码仓库,自动配置并提供Git LFS服务器,管理与代码变化紧密耦合的大文件。
用户直接下载与安装Git LFS命令行客户端,或者Sourcetree等具有LFS功能支持Git GUI客户端,使用iSoftBook平台的Git LFS功能,具体参见: Git LFS使用手册。
iSoftBook Git LFS特点:
- 零配置,项目Git仓库自动支持LFS。
- Git LFS服务器遵循平台统一认证和权限管控。
- Git LFS无缝集成于平台版本库Web客户端。
- Git LFS零拷贝、非阻塞高性能文件传输。

浏览版本仓库
iSoftBook平台提供文档仓库和代码仓库统一在线浏览和导航,简化双版本库操作。

- 提交日志浏览

- 版本提交浏览
- 版本文件系统浏览
- 代码Diff
- 代码Blame
Git仓库代码评审
支持基于Git代码库进行代码评审和注解。
- 代码评注编辑

- 代码评注查看

- 基于Diff的代码评注

关注与关联
建立版本提交与任务、文件等之间的关联关系。支持提交和任务自动双向关联,支持用户Git仓库推送的自动关注。

- 关注版本提交

- 提交插入关联资产