從 SVN 工作副本導出純代碼、遷移到 Git 或打包發布時,需刪除所有 .svn 元數據目錄。提供 Linux 命令行、Windows 批處理、註冊表右鍵菜單三種方案。
find . -type d -name ".svn" -print0 | xargs -0 rm -rf
find . -type d -name ".svn" -exec rm -rf {} +
# 使用 svn export (官方推薐)
svn export /path/to/working_copy /path/to/clean_export
# 或 rsync 排除
rsync -av --exclude='.svn' /src/ /dest/
# 在項目根目錄執行
for /r . %d in (.svn) do @if exist "%d" rd /s /q "%d"
xcopy "C:\project" "C:\project_clean" /s /i /exclude:exclude.txt
# exclude.txt 內容:
# .svn\
保存為 add_svn_clean_menu.reg 並導入:
Windows Registry Editor Version 5.00
[HKEY_CLASSES_ROOT\Directory\shell\DeleteSVN]
@="刪除該目錄下所有 .svn 文件夾"
"Icon"="cmd.exe"
[HKEY_CLASSES_ROOT\Directory\shell\DeleteSVN\command]
@="cmd.exe /c \"for /r \"%1\" %d in (.svn) do @if exist \"%d\" rd /s /q \"%d\""
使用:資源管理器中右鍵任意文件夾 → 「刪除該目錄下所有 .svn 文件夾」。
Get-ChildItem -Path "C:\project" -Recurse -Force -Directory -Filter ".svn" | Remove-Item -Recurse -Force
# 1. 導出乾淨代碼
svn export https://svn.example.com/repo/project project_clean
# 2. 初始化 Git
cd project_clean
git init
git add .
git commit -m "Initial import from SVN"
# 3. 關聯遠程倉庫
git remote add origin https://git.example.com/project.git
git push -u origin master
.svn.svn,舊版本每層目錄皆有svn export 或 rsync --exclude,避免遍歷刪除耗時Linux 用 find -exec rm -rf,Windows 用 for /r 循環或 PowerShell,最優雅方案是 svn export 直接導出乾淨代碼。右鍵菜單註冊表適合頻繁操作的開發人員。