泛在版本管理

内置Git HTTP、Git LFS、Git Cloud和SVN Cloud服务器和大文件优化技术,协同实现二进制文档高性能和程序代码高效率版本管理。自动化为用户、资产、项目提供版本服务,实现版本仓库的权限管控、API文档生成、代码评审、持续集成与部署、任务追踪等功能。

开始了解

iSoftBook版本管理概述

1.Git HTTP

程序代码开发通常检出整个代码系统,采用并行修改、合并的工作模式。Git的分布式模型、轻量级分支和简单合并,适合程序代码等轻量级文本文件的高效率版本管理。

iSoftBook为每个项目内置集成和提供Git HTTP服务器,支持与Sourcetree、IntelliJ IDEA、Jenkins等集成访问和持续集成服务。

iSoftBook Git HTTP服务

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处理大文件的性能。

iSoftBook Git HTTP、Git LFS服务

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服务

iSoftBook Git Cloud支持单文件进行修改、共享和版本处理,不要checkout完整版本,从而有效提升了大文件处理性能。其服务特点:

  • 基于在线文档,每位用户、每项资产、每个项目都内置提供Git Cloud服务。
  • 基于分块、续传、重试、异步、零拷贝、非阻塞、多线程等技术,增进大文件处理性能。
  • 基于压缩和增量存储,缩减版本库空间体积。
  • 充分共享,文件通过确认后方提交而形成新版本,避免了因文件共享而提交,减少版本数量,缩减版本库空间体积。
  • 基于目录的修改提交。

4.SVN Cloud

SVN能够实现目录版本化,提供锁定机制,能够追踪文件、目录的复制与重命名,具有高性能的二进制文件存储与处理机制。同时考虑遗留SVN系统的迁移。据此,iSoftBook实现了SVN Cloud,即底层基于SVN实现透明的云端版本处理。

iSoftBook SVN Cloud服务

5.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仓库推送的自动关注。

  • 关注版本提交
  • 提交插入关联资产

持续集成与部署

iSoftBook提供与CI/CD服务器的专属集成机制,监控Git仓库代码推送,实现与Jenkins等CI/CD服务器的快捷、实时、安全、双向集成。

具体访问iSoftBook开放集成