mirror of
				https://github.com/balkian/gists.git
				synced 2025-11-04 01:28:25 +00:00 
			
		
		
		
	This commit is contained in:
		
							
								
								
									
										42
									
								
								submodules2subtrees.sh
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										42
									
								
								submodules2subtrees.sh
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,42 @@
 | 
			
		||||
#!/bin/bash -x
 | 
			
		||||
# extract the list of submodules from .gitmodule
 | 
			
		||||
cat .gitmodules |while read i
 | 
			
		||||
do
 | 
			
		||||
if [[ $i == \[submodule* ]]; then
 | 
			
		||||
    echo converting $i
 | 
			
		||||
 | 
			
		||||
    # extract the module's prefix
 | 
			
		||||
    mpath=$(echo $i | cut -d\" -f2)
 | 
			
		||||
 | 
			
		||||
    # skip two lines
 | 
			
		||||
    read i; read i;
 | 
			
		||||
 | 
			
		||||
    # extract the url of the submodule
 | 
			
		||||
    murl=$(echo $i|cut -d\= -f2|xargs)
 | 
			
		||||
 | 
			
		||||
    # extract the module name
 | 
			
		||||
    mname=$(basename $mpath)
 | 
			
		||||
 | 
			
		||||
    # deinit the module
 | 
			
		||||
    git submodule deinit $mpath
 | 
			
		||||
 | 
			
		||||
    # remove the module from git
 | 
			
		||||
    git rm -r --cached $mpath
 | 
			
		||||
 | 
			
		||||
    # remove the module from the filesystem
 | 
			
		||||
    rm -rf $mpath
 | 
			
		||||
 | 
			
		||||
    # commit the change
 | 
			
		||||
    git commit -m "Removed $mpath submodule"
 | 
			
		||||
 | 
			
		||||
    # add the remote
 | 
			
		||||
    git remote add -f $mname $murl
 | 
			
		||||
 | 
			
		||||
    # add the subtree
 | 
			
		||||
    git subtree add --prefix $mpath $mname master --squash
 | 
			
		||||
 | 
			
		||||
    # fetch the files
 | 
			
		||||
    git fetch $murl master
 | 
			
		||||
fi
 | 
			
		||||
done
 | 
			
		||||
git rm .gitmodules
 | 
			
		||||
		Reference in New Issue
	
	Block a user