发新帖

[其他] 使用SVN批量添加除特定文件夹外的所有文件

零下一度 1月前 56

在SVN中要批量添加文件但排除某个特定文件夹,可以通过以下几种方法实现:

方法一:使用svn add配合find命令(Linux/macOS)

find . -path './exclude_dir' -prune -o -type f ! -exec svn info {} >/dev/null 2>&1 \; -exec svn add {} \;

解释:

-path './exclude_dir' -prune - 排除名为'exclude_dir'的目录

-type f - 只处理文件

! -exec svn info {} - 检查文件是否已在SVN控制下

-exec svn add {} - 添加符合条件的文件

方法二:分步处理(适用于所有平台)

1、首先添加所有文件:

svn add --force .

2、然后撤销对排除文件夹的添加:

svn revert --recursive exclude_dir/

方法三:使用xargs(Linux/macOS)

svn status | grep '^?' | grep -v 'exclude_dir' | awk '{print $2}' | xargs svn add

解释:

svn status - 显示状态

grep '^?' - 筛选未版本控制的文件

grep -v 'exclude_dir' - 排除特定目录

awk '{print $2}' - 提取文件名

xargs svn add - 批量添加

方法四:Windows下的PowerShell命令

svn status | Where-Object { $_ -match '^\?\s+(.*)' -and (-not ($matches[1] -like '*\exclude_dir\*')) } | ForEach-Object { svn add $matches[1] }

注意事项

1、在执行前建议先使用svn status查看哪些文件会被添加

2、排除的文件夹路径是相对于当前目录的

3、这些方法都不会添加被SVN忽略的文件(由svn:ignore属性控制)

4、添加后仍需执行svn commit提交更改

完整示例(Linux/macOS)

# 进入工作目录

cd /path/to/working/copy

# 批量添加除"temp"文件夹外的所有新文件

find . -path './temp' -prune -o -type f ! -exec svn info {} >/dev/null 2>&1 \; -exec svn add {} \;

# 查看添加结果

svn status

# 提交更改

svn commit -m "批量添加文件,排除temp目录"


最新回复 (0)
返回
零下一度
主题数
931
帖子数
0
注册排名
1