ubuntu 在 R40e 上 還有 Debian 在 Sempron 2600 上

2015年8月18日 星期二

python : 找出沒有在 git control 下的 folder

因為 vendor 給的 android source 沒有包含 git, repo 資訊,
所以只好採用 .. repo sync 一個相近的 source, 覆蓋後 commit

所以覆蓋後,要檢查是不是有沒被 versio control 的 folder:
用 python 寫:
import os

i=0
for root, dirlist, filelist in os.walk("./"):
        toremove=[]

        for ss in ['.repo','out']:
                if ss in dirlist:
                        toremove.append(ss)

        for ss in dirlist:
                gpath = os.path.join(root,ss,'.git')
                if os.path.isdir(gpath):
                        toremove.append(ss)

        for ss in toremove:
                dirlist.remove(ss)

        if (len(dirlist)==0) and (len(toremove)==0):
                print i, root
                i=i+1
因為 os.walk 會依照top down 的方式,到 dirlist 中搜尋。
所以就用修改 dirlist 的方式來作:
  • 先排除 .repo, out 目錄
  • 排除含有 .git 的次目錄
最後就可以印出來。

但是這個結果會把所有沒有 git control 的 folder, subfolder 都印出來,(因為他沒辦法判斷要從哪裡算起,是一個 project)
這部份要自己作。


這個動態刪除 dirlist 的作法在更換 python 版本的時候出了問題。
原來是在判斷包含 .git 後直接作 dirlist.remove(ss)
但是卻發現這樣會影像到下一個 ss (in dirlist) 的判斷。
所以只好先放在 toremove[] 中,最後再一次修改全部

放在: https://github.com/checko/python_repo

沒有留言:

標籤

網誌存檔