Shell 스 크 립 트 소 칼 시험 (2) - git 창고 선택 및 이전

앞에서 저 는 데 비 안 시스템 설정 에 관 한 스 크 립 트 를 보 여 주 었 습 니 다. 새 컴퓨터 는 설정 외 에 또 하나의 문 제 는... 자원 의 이전 입 니 다!(일반적인 자원 에 대해 서 는 scp 복사 가 가능 합 니 다. 물론 랜 내 scp 의 속 도 는 상당 하지만 git 창고 와 같은 특수 자원 에 대해 서 는 scp 를 직접 사용 하면 git 창고 의 사용 에 영향 을 줄 수 있 습 니 다!)
제 개인 적 인 습관 은 모든 git 창 고 를 reposcory 라 는 디 렉 터 리 에 두 었 습 니 다.디 렉 터 리 아래 dirs/. git/config 의 주 소 를 하나씩 검사 한 다음 git clone 을 통 해 다른 기계 에서 창고 디 렉 터 리 를 재 구축 하 는 것 은 너무 프로 답지 못 해 보 입 니 다. 그래서 저 는 아주 간단 한 스 크 립 트 (my reposcory. sh) 를 써 서 창고 의 주 소 를 읽 고 모든 주 소 를 한 파일 에 추가 한 다음 다른 스 크 립 트 (clone. sh) 를 사용 합 니 다.이 파일 의 모든 주 소 를 git clone 으로 진행 하 는 것 은 간단 합 니 다.
우선 git 창고 주 소 를 수집 하 는 셸 스 크 립 트 를 보십시오.
#!/bin/bash
# (C) 2014 Yunlong Zhou <[email protected]>
# Under licence  GPL
# File :   my_repository.sh 
# Introduction:
#       This script is using for collect all the git address to a file -- repository_file
# Useage :
#		1. cd repository	-- cd to the dir that you store all the git repository
#		2. chmox +x my_repository.sh	-- give the script a execute permission
#		3. ./my_repository.sh


# for delete old temp file ,if there is !
if [ -f all_dir -a -f repository_file ]; then
	echo "Now delete old temp file"	
	rm all_dir repository_file 2> /dev/null
fi

# read all the items under this dir to the file all_dir
ls -l | awk '{print $9}' > all_dir
# deal with every git repository dir and collect the url then store to file repository_file
while read FILE_NAME
do
	if [ $FILE_NAME != " " -a -d $FILE_NAME -a -s $FILE_NAME ];then
		echo "Now dealing the "$FILE_NAME 
		if [ -d $FILE_NAME/.git ]; then
			grep -e "url"	$FILE_NAME/.git/config | cut -d "=" -f2 | cut -d " " -f2 >>repository_file
		fi
	fi

done < all_dir
# remove temp file and give a Hint !
rm all_dir
if [ $? == 0 ]; then
	echo "Ok,all the url of your repository have been send to file -- repository_file"
fi

현재 모든 창고 디 렉 터 리 에 git 창고 주소 가 추가 되 었 습 니 다.
repository_file
파일 중:
long@zhouyl:~/repository$ cat repository_file
git://git.kernel.org/pub/scm/fs/ext2/e2fsprogs.git
git://gitorious.org/tinylab/pleac-shell.git
git://git.kernel.org/pub/scm/linux/kernel/git/clrkwllms/rt-tests.git
...
            

이제 우 리 는 scp 를 사용 하여 reposcory 를file 파일 및 아래 스 크 립 트 를 새로 설 치 된 컴퓨터 에 복사 합 니 다 (scp reposcory file clone. [email protected]:/tmp/), 그리고 clone. sh (./clone. sh) 를 직접 실행 하면 됩 니 다!
#!/bin/bash
# (C) 2014 Yunlong Zhou <[email protected]>
# Under licence  GPL
# File :   clone.sh 
# Introduction:
#       This script is using for git clone every item in repository_file
# Useage :
#       1. ./clone.sh   

if [ ! -f repository_file ]; then
	echo "There is no repository_file ,we will exit"
	exit
fi

while read READLINE
do
	echo "Now we will clone $READLINE"
	git clone $READLINE
done < repository_file

rm repository_file

전송:http://blog.csdn.net/longerzone/article/details/20877841”

좋은 웹페이지 즐겨찾기