我有一個大的目錄~/.vim
,在其中我有一個其他許多git回購的子目錄。我想要製作我的~/.vim
目錄的git回購,但不想通過我的其他每個git子目錄。自動將所有子模塊添加到回購
有什麼辦法只是遞歸地通過並添加所有子模塊?
我有一個大的目錄~/.vim
,在其中我有一個其他許多git回購的子目錄。我想要製作我的~/.vim
目錄的git回購,但不想通過我的其他每個git子目錄。自動將所有子模塊添加到回購
有什麼辦法只是遞歸地通過並添加所有子模塊?
假設是vim的是已經一個有效的git回購和你想將所有的git回購協議添加到您的主混帳回購協議,那麼下面循環可能是你需要的東西:
for i in $(ls -d */); do; if [ -d "$i".git ]; then; git submodule add $i; fi; done
該循環首先僅列出目錄,測試這些目錄是否有效.git repos,並最終將它們添加爲子模塊。下面是一個更可讀的版本:
for i in $(ls -d */)
do
if [ -d "$i".git ]
then
git submodule add $i
fi
done
請注意,您應該束文件夾執行循環。因爲測試子句只是測試一個目錄級別。
以下是對我有用: ''我在$(ls -d bundle/*); do; if [-d「$ i」/。git];然後; git submodule add $(cd $ i && git remote show origin | grep Fetch | awk'{print $ 3}')./$i;網絡連接;完成' – NeonNinja
我已經嵌套在更深的子目錄git的回購,所以要找到和深度的任何級別添加它們,我不得不使用: for i in $(find ~/Sources/* -type d -name .git) do cd $i && cd .. && git submodule add $(pwd) done
我懷疑這是否有用。這會將子模塊添加爲遠程的本地路徑,但會使用http或ssh URI。 – lumbric
cd /to/super/repo
root_path=$(pwd)
for submodule in $(find -mindepth 2 -type d -name .git); do
submodule_dir=$root_path/$submodule/..
remote_name=$(cd $submodule_dir && git rev-parse --abbrev-ref --symbolic-full-name @{u}|cut -d'/' -f1)
remote_uri=$(cd $submodule_dir && git remote get-url $remote_name)
echo "Adding $submodule with remote $remote_name..."
# If already added to index, but not to .gitmodules...
git rm --cached $submodule_dir &> /dev/null
git submodule add $remote_uri $submodule_dir
done
你想使你的.vim文件夾中的混帳回購協議並添加所有子目錄(這是git回購)作爲子模塊?是對的嗎 ? –
是的,我有'〜/ .vim /捆綁/ matchit'例如從github直接克隆 – mazlix