bash - 如何使用shell命令检查SVN checkout 文件并在目录中创建链接

标签 bash svn

基本上我的问题是如何使用 bash shell 命令自动执行以下操作,这样我就可以轻松跟踪修改过的文件。

  1. 列出 svn check out 文件
  2. 在名为“change”的目录中创建指向上述文件的链接文件

laptop$ svn status -q

M            rcms/src/config/ta_show.c
M            rcms/src/config/ta_config.c

laptop$ cd  change
laptop$ link -s ../rcms/src/config/ta_show.c ta_show.c
laptop$ link -s ../rcms/src/config/ta_config.c ta_config.c

laptop$ ls
lrwxrwxrwx 1 root root 59 Nov 27 12:24 ta_show.c -> ../rcms/src/config/ta_show.c
lrwxrwxrwx 1 root root 59 Nov 27 12:24 ta_config.c -> ../rcms/src/config/ta_config.c

我正在考虑使用如下的 shell 命令:

$ svn status -q | sed 's/M       //' | xargs -I xxx ln -s ***BETWEEN REAL FILE AND BASE FILENAME***

最佳答案

你有两件事需要关心:

  • svn 状态为'M'的每个文件之间的空行
  • 提取文件名

awk one liner 可以做到:

awk '$0{x=$2;gsub(".*/","",x);print "ln -s ../"$2" "x}'

因此,如果您将 svn status 输出通过管道传输到上面的行,它会为您打印 ln -s 命令行。

如果您希望执行 ln -s 行,您可以将输出通过管道传递给 sh (svn status|awk ...|sh) 或替换 printsystem

最后我想以下面的输出为例:

kent$ echo "M            rcms/src/config/ta_show.c

M            rcms/src/config/ta_config.c"|awk '$0{x=$2;gsub(".*/","",x);print "ln -s .."$2" "x}'
ln -s ../rcms/src/config/ta_show.c ta_show.c
ln -s ../rcms/src/config/ta_config.c ta_config.c

关于bash - 如何使用shell命令检查SVN checkout 文件并在目录中创建链接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13635279/

相关文章:

bash - (macOS Bash) 2个看似相同的字符串并不相等,仅显示与 "set -x"的差异

svn - 如何使用 Maven 从 SVN 标记创建分支?

svn - 如何保持 Subversion 和远程服务器(通过 FTP)同步?

java - Subclipse 安装和设置

多个大型开发分支的 Git 与 Subversion

node.js - 如何将curl 输出直接发送到Azure 存储?

bash - 为什么我不将 shell 命令的结果保存到我的变量中?

linux - 在 bash 中,如何删除名称写在文件中的文件?

ruby - bash 在 ubuntu 12.04 LTS 上安装 rvm 时出现问题

java - Eclipse 正在尝试在我的 .svn 目录中构建文件...我该如何告诉它停止?