求与git log --name-status等价的SVN命令:获取克隆后本地新增文件
如何在SVN中列出所有新增文件(类似Git的
git log --name-status) 我太懂这种找不到对应命令的抓狂了——想把SVN仓库里所有历史上新增的文件列出来,就像Git里git log --name-status能直观看到所有新增项那样,试了几个命令都没达到预期?给你两个好用的方案:
方法1:用svn log结合过滤命令
SVN的svn log加上详细参数后,能输出每次提交的文件变更,我们可以过滤出其中标记为新增(A)的条目:
svn log -v --stop-on-copy | grep -E "^ A"
逐个解释下参数:
-v:开启详细日志模式,会列出每个提交涉及的所有文件路径--stop-on-copy:只显示当前分支/路径从创建以来的提交记录,不会追溯到它从其他分支复制过来的历史,避免输出无关内容grep -E "^ A":过滤出以三个空格加A开头的行——这正是SVN标记新增文件的格式
如果觉得输出太啰嗦,只想保留纯文件名,可以再加个awk提取路径:
svn log -v --stop-on-copy | grep -E "^ A" | awk '{print $2}'
方法2:直接导出所有被版本控制的文件(如果只需要当前仓库的所有新增文件清单)
如果你只是想要克隆下来的仓库里所有现在存在的、曾经被添加过的文件(而不是按提交历史分组),可以直接用:
svn ls -R
这个命令会递归列出仓库里所有被版本控制的文件,相当于本地所有从SVN拉取的文件清单,格式也很干净。
需要补充的是,svn status只能显示本地工作副本和仓库的差异,刚克隆的仓库里它只会显示空或者未版本化的文件,自然帮不到你;而svn list默认只显示当前目录的文件,加上-R才是递归所有文件,适合快速获取全量文件清单。
内容的提问来源于stack exchange,提问作者A. Hill
相关产品推荐
相关产品推荐

