Bash

訪問版本控制下的所有目錄

  • January 7, 2014

是否有一個find咒語可以讓我訪問 SVN 版本控制下的所有目錄?我正在嘗試使用execdir開關添加到svn:ignore每個目錄中的屬性。就像是:

find . -type d -execdir svn propset svn:ignore -F <((svn propget svn:ignore; echo "new ignore pattern") | sort -u) .' \;

但我不能find僅限於 SVN 目錄。

對於舊版本svn,您.svn在每個目錄中都有一個受修訂控制的目錄,您可以執行以下操作:

find . -name .svn -type d -prune -execdir bash -c '
 cd -P .. &&
   propset svn:ignore -F <(
     (svn propget svn:ignore; echo "new ignore pattern") | sort -u) .' bash {} \;

對於較新的,您只有一個.svn和一個 sqlite3 數據庫:

find . -path '*/.svn/wc.db' -execdir bash -c '
 cd -P .. &&
   sqlite3 .svn/wc.db "select local_relpath from NODES where kind == \"dir\"" |
     while IFS= read -r dir; do
       [ -d "$dir" ] &&
         propset svn:ignore -F <(
           (svn propget svn:ignore "$dir"; echo "new ignore pattern") | sort -u
         )  "$dir"
     done' bash {} \;

引用自:https://unix.stackexchange.com/questions/108237