0%

背景

最近项目由于一些特殊需要,使用了git的submodules工具来引入一个子项目到主项目中。然而考虑submodules工具在团队协作开发的过程中,容易出现子项目版本不一致的问题,于是研发了git_submodule_version_checker这款工具来解决。

1、关于git的submodules工具的介绍可以点击阅读《Git 工具 - 子模块》

2、关于git的submodules工具的优缺点,有兴趣的请直接Google吧,目前网上已经很多资料了。总得来说,其最大的(可能也是唯一的)优点是:允许开发者将一个子项目的git仓库作为主项目git 仓库的子目录,并让子项目保持提交的独立;而其突出的缺点主要有以下几个:

  • 主项目仓库不记录子项目仓库的文件变动,只记录子项目仓库的commitId,在这个背景下,团队协作开发过程中容易产生子项目版本不一致的问题,具体表现如下:

    • 团队协作开发时,若有成员更新了子项目,但是你git pull后,却没有运行git submodule update --remote更新子项目本地仓库,那么你极有可能再次把旧的子项目版本信息(子项目仓库依然指向一个旧的commitId)提交至主项目
    • 团队协作开发时,若你在本地改动了子项目,并在主项目中提交并推送了子项目版本信息,但却没有推送子项目仓库上的改动,这时其他成员在拉取更新后,运行git submodule update时,会遇到“找不到所引用的子模块提交”的错误提示
      • 每次更新子项目仓库,子项目仓库都会回到游离状态,在这个背景下, 会产生的问题有:
    • 若你已经切换到指定分支,在更新后,需要手动切换分支;
    • 若你对子项目做了修改,但是忘记了提交,这时候执行更新,会导致修改被丢失;
  • 子项目仓库总是需要手动更新(不过可以通过自动化工具编写帮助解决此问题)

Read more »

简介

XDR全称为External Data Representation,是一个描述和编码数据的标准。1987年由Sun公司(Sun Microsystems, Inc)发明。

XDR同时是一门语言,主要用来描述协议的数据格式,如RPCNFS等协议就是使用它来描述自身的数据格式。

XDR语言只能用于描述协议的数据格式,不具有编程功能。该语言具有以下特点:

  • 类似于C语言
  • 描述复杂的数据格式时,相比图形描述,其更简洁
Read more »

前言

由于项目需要,新近实现了一个长截图库 SnapshotKit。其中,需要支持 UIWebViewWKWebView 组件生成长截图。为了实现这个特性,查阅了很多资料,同时也做了不同的新奇思路尝试,最终实现了一个新的、取巧的技术方案。

以下主要总结了在“WebView生成长截图”需求方面,“网上已有方案”和“我的全新方案”的各自实现要点和优缺点。

Read more »

前言

在项目新版本中,要实现类似以下的效果:给每个section区域添加一个卡片装饰背景以及一个袖标装饰图标(卡片在所有的cell下,袖标在cell上面)。

效果-1.png

效果-2.png

这可以通过UICollectionViewDecorationView 特性来达到以上效果。本文主要是总结 DecorationView 的实现、重用机制和存在的坑。

Read more »