如何使用SVN复制指定文件夹内容到目标目录且不携带源父文件夹
SVN复制子目录内容到目标目录的解决方案
这个需求完全可以实现,你遇到的是SVN拷贝命令的默认逻辑:当拷贝源为完整文件夹、且目标文件夹已经存在时,SVN会默认将整个源文件夹放入目标路径下,而非合并两者的内容。你可以按以下两种方案操作:
方案1:直接操作远程仓库(无需拉取本地副本)
在源路径末尾添加/*通配符,指定拷贝源文件夹下的所有内容,而非文件夹本身,命令示例如下:
svn cp https://svn_server.com/trunk/a/* https://svn_server.com/trunk/b -m "拷贝a目录下全部内容到b目录"
注意:通配符方案仅支持部分支持远程路径通配符的SVN客户端,如果你执行时提示路径不存在,请改用下面的本地操作方案
方案2:通过本地工作副本操作(兼容性最高)
- 拉取trunk目录的本地副本(已有本地副本可直接跳过该步骤)
svn checkout https://svn_server.com/trunk/ local_trunk - 拷贝a目录下的全部内容到b目录
cp -r local_trunk/a/* local_trunk/b/ - 提交变更到远程仓库
cd local_trunk && svn add b/* --force && svn commit -m "同步a目录内容到b目录"
操作注意事项
- 如果目标目录b下存在和a目录同名的文件,SVN默认会弹出冲突提示,你可以根据实际需要选择保留现有文件或者覆盖,添加
--force参数可以直接强制覆盖同名文件 - 操作前建议先执行
svn list [路径]确认源和目标目录的内容,避免误操作
内容的提问来源于stack exchange,提问作者drschultz
相关产品推荐
相关产品推荐

