将ceph中的submodule转化为正常文件提交到内部仓库中
1、问题
ceph 的submodule经常下载不下来导致编译打包都困难,如果有一个方法将submodule下载下来然后直接放到仓库中,以免每次都需要重新clone了。这时发现另外一个问题,submodule没有被ceph仓库管理,修改内容也无法提交。
2、 解决方法
(1)清理submodule
使用git submodule deinit命令来删除子模块的引用:
git submodule deinit src/spawn
使用git rm命令从主仓库中删除子模块的跟踪:
git rm --cached src/spawn
(2)下载社区已经做好的对应版本包,地址如下:ceph社区源码包,把其中的对应submodule替换掉再提交到仓库。
src/spawn,src/rocksdb,src/dmclock,src/googletest,src/zstd,src/xxHash,src/erasure-code,src/civetweb,src/seastar,src/isa-l,src/rapidjson,src/crypto/isa-l/isa-l_crypto,src/boost/
3、 关闭编译时初始化submodule
# git diff do_cmake.sh
diff --git a/do_cmake.sh b/do_cmake.sh
index ac60a5e881a..c79c8bc2094 100755
--- a/do_cmake.sh
+++ b/do_cmake.sh
@@ -1,6 +1,6 @@
#!/usr/bin/env bash
set -x
-git submodule update --init --recursive
+# git submodule update --init --recursive
if test -e build; then
echo 'build dir already exists; rm -rf build and re-run'
exit 1
4、注释.gitignore中的部分忽略项
vim ./.gitignore
#*.patch
#tags
#core
#*.log
之后git status 就可以看到复制的修改,可以提交到内部仓库了。