给客户提供代码

给客户提供代码的要求

以下是我给客户提供代码时的个人准则. 仅供参考

  1. 默认不提供git信息.
  2. 为了减小体积, 不提供第三方子模块代码.
  3. 为了防止客户不加git信息, 然后几个版本之后出了问题, 告诉你只改了"A"而实际上把"BCDE"全改了, 用diff看都不知道哪些是想要的跟踪代码, 建议帮他们初始化git仓库, 后续有问题后git查看一清二楚.
  4. 帮客户初始化git仓库时, 可记录本地/内部的commit hash, 有问题时可以对着git知道修了哪些已知问题, 后面直接给补丁也不是不行. (客户要实在不懂git就还是给源码包吧)
  5. 提供代码之前自己本地试一下, 防止代码给出去后发生编译都过不去的低级问题, 丢死人.

游的工作流

假设有内部仓库A, A中有子仓库a及分支x, y, 还有标签tag1, tag2. 其中Ax分支中最新commit123456, 而现在要基于x分支上的654321并增加补丁product.patch给客户提供代码B.

游的流程如下:.

复制代码
git clone https://git_path/A  B  -b x --depth=1 --no-tags
cd A
git fetch origin 654321--depth=1
git checkout FETCH_HEAD -b rel
git branch -D x
git remote remove origin
git apply product.patch   # am不一定能打上, 可以的话推荐am.
git add .
git commit -m "product release {654321} {today} {author}"

做完这些算是有了一份干净的代码, 但还保留两条reflog, 所以并不是最优的, 如果没那么严格, 这么给出去也不是不可以.

然后自己跑一下确定代码没问题:

复制代码
git submodule update --init --recursive --depth 1
make  --dry-run  # 根据实际项目运行

此时代码验证没问题, 但多了编译运行的临时文件, 及子模块文件, 需要清理下:

复制代码
git submodule deinit -f --all
git clean -xdf

最后清理git历史记录:

复制代码
git reflog expire --expire=now --all

总结下:

bash 复制代码
git clone https://git_path/A  B  -b x --depth=1 --no-tags
cd A
git fetch origin 654321--depth=1
git checkout FETCH_HEAD -b rel
git branch -D x
git remote remove origin
git apply product.patch   # am不一定能打上, 可以的话推荐am.
git add .
git commit -m "product release {654321} {today} {author}" # ===============得到初版可提交代码
# git submodule update --init --recursive --depth 1
# make  --dry-run  # 根据实际项目运行
# git submodule deinit -f --all # =================这几条不测试的话就用不着.
git clean -xdf
git reflog expire --expire=now --all
相关推荐
北城笑笑10 分钟前
Server 18 ,Nginx + Vite 前端部署排错实战:从 `/api/gpt/chat` 404 到 9012 后端服务的完整定位过程
linux·运维·前端·nginx·ubuntu·vue
NJCloud24 分钟前
ELK企业级日志分析平台(四)——基于 ELFK + Kafka 的日志采集与传输平台部署实践
linux·运维·分布式·elk·kafka
鲁邦通物联网1 小时前
充电站底层脱机DLB引擎解构:基于Linux调度的边缘计算网关并发控制实战
linux·运维·人工智能·边缘计算·边缘计算网关·5g数采·工业级边缘计算网关
Zhang~Ling2 小时前
Linux多线程互斥锁:从现象到原理解析
linux·运维·网络
ambition202424 小时前
操作系统同步:读者-写者问题与读写公平法详解(附每个 PV 操作含义)
linux·开发语言·数据结构·unix
zmzmzmalo5 小时前
Linux ELF文件加载与内存管理揭秘
linux·网络·数据库
三言老师11 小时前
K8s集群运行时自动化运维全覆盖落地实操(下)
linux·运维·服务器·网络
fpcc12 小时前
工具使用—git add命令分析说明
git·工具
ltl12 小时前
HAProxy HTX 与 HTTP 路径:内部表示、改写落点与协议分叉
linux
ltl12 小时前
可拆分 OS:CXL 内存池化如何动摇本地 DRAM 假设
linux