2013-01-16 79 views
0

我有以下文件夾結構的Git倉庫URL:現在如何獲得一個子文件夾

FolderA 
-FolderA1 (child of FolderA), and 
-FolderA2 (child of FolderA) 

,文件夾A1和A2是git倉庫。我寫一個腳本來得到這兩個文件夾的Git倉庫URL當我在文件夾的水平。

我想是這樣的:

cd FolderA 

git remote -v | awk -F ' ' '{ print $2 }' | sort -u | cd FolderA1 

git remote -v FolderA1\ | awk -F ' ' '{ print $2 }' | sort -u 

但這似乎並不工作。任何想法如何獲得FolderA1 /文件夾A2的URL?

由於提前, RKS

+0

該規範是不清楚寫的。輸出結果是否應包含網址?列出目錄旁邊的每個URL? ...? –

回答

1

就個人而言,我會做這樣的事情(需要關聯數組支持的bash 4):

get_subdir_urls() { 
    local oldwd subdir url idx 
    [[ $1 ]] && { oldwd=$PWD; cd "$1"; } 
    for subdir in */.git; do 
    (
    declare -A urls 
    cd "${subdir%.git}" && \ 
     while read _ url _; do 
     urls[$url]="${subdir%.git}" 
     done < <(git remote -v) 
    for idx in "${!urls[@]}"; do 
     printf '%s\t%s\n' "${urls[$idx]}" "$idx" 
    done 
    ) 
    done 
    [[ $1 ]] && cd "$oldwd" 
} 

# usage: 
get_subdir_urls FolderA 
+0

這工作對我來說: get_subdir_urls(){ 本地oldwd subdir url idx [[$ 1]] && {oldwd = $ PWD; cd「$ 1」; } 聲明-a網址 I = 0 用於*/git的子目錄。做 ( CD 「$ {子目錄%的.git}」 && \ \t \t gitPath ='GIT中遠程-v | AWK -F '' '{打印$ 2}' |排序-u' 網址[I] = $ gitPath I = $(第(i + 1)) 用於IDX 「$ {網址[@]!}」;做 printf的 '%s的\噸%S \ N' 「$ {網址[$ IDX]}」 做 ) 做 [[$ 1]] && CD「$ oldwd」 } – RKS

+0

@RKS很難有讀更改 - 但如果你使用'i'作爲一個整數計數器,這是一個非常值得懷疑做事的方式;你可以用'urls + =(「$ gitPath」)'來使用一個常規的數組,而不是一個關聯的數組,並且完全取出'i'。使用關聯數組的好處給你是免費的重複數據刪除,而無需'排序-u';你的改變會把它扔掉。另外,我希望你能更清楚地說明你的天賦 - 現在,它很難知道_why_原來的建議是你想要的不完全是。 –

+0

真棒...謝謝:) – RKS

相關問題