【SHELL】一个非常有趣的问题
来源:互联网 发布:淘宝卖假货举报中心 编辑:程序博客网 时间:2024/05/17 04:28
使用SHELL解决的一个问题
现在需要代码合并,从SVN上合并到GIT上,GIT上的代码头文件和源文件分布在不同的文件夹下,直接使用Beyond compare来比较的话,不是什么好的体验,非常麻烦。于是我在想有什么好办法能更快速的解决这个问题。
问题梳理:
- 文件夹名称发生变化
- 文件内容可能有变化,需要对比同步
- 文件名保持不变
终于想到一个相对简便的方法,先分别把需要对比的.h/.c/.cpp/.java全部从svn和git找出来,复制到其他文件夹下。
使用shell命令查找所有的源文件
使用下命令分别将git和svn上的代码,复制到不同的文件夹下:
#查找当前目录下所有的.c/.h/.cpp/.java文件,然后复制到test目录下cd gitfind . -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name ".java" | xargs -i cp {} ../testgit/#复制svn代码cd ../svnfind . -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name ".java" | xargs -i cp {} ../testsvn/
手工合并
使用Beyond Compare比较testgit vs testsvn,将testsvn中的修改合并到testgit中去
替换合并后的文件
将文件合并好后存于testgit中,而原文件位于git文件夹中的不同的目录下,如何合并进去呢?这里用到了shell脚本。如下所示:
#!/bin/sh#同上,查找git中所有的源文件和头文件,将其重定向到文件/tmp/1.txt中,其中保存的是类似信息#./resource_manager/bus/server/resourcemanager_bus_server.c#./app_manager/am_main.c#./app_manager/inc/am_api.h#./app_manager/src/am_api.cfind . -name "*.c" -o -name "*.h" -o -name "*.cpp" -o -name ".java" 1>/dev/null > /tmp/1.txtecho "now porcess 1.txt..."#根据1.txt中的文件绝对路径,提取文件名,将对比后位于testgit中的文件复制到1.txt中指定的绝对路径处,实现文件替换while read linedo #echo $line #获取文件名如am_api.c filename=${line##*/} #对比后更新的文件位置 toCompareFile=../gcode/$filename #echo $toCompareFile #对比git 和 testgit中的代码,如果有差异则拷贝过去 diff $line $toCompareFile 2>&1 1>/dev/null rc=$? #echo $rc if [ $rc -eq 1 ] then echo "$line is different, then copy it" cp -f $toCompareFile $line fidone < 1.txtrm -f /tmp/1.txtecho "process finished..."
好了,大功告成!!!
1 0
- 【SHELL】一个非常有趣的问题
- 【SHELL】一个非常有趣的问题
- 一个非常有趣的QTcpServer多线程编程问题
- 一个有趣的问题
- 发现shell中一个有趣的现象
- 关于继承和接口的一个非常有趣的比喻
- 关于继承和接口的一个非常有趣的比喻
- 一个有趣的SQL问题。
- 一个有趣的小问题
- 一个有趣的SQL问题。
- 一个有趣的SQL问题。
- 一个有趣的指针问题
- 一个奇怪有趣的问题
- 一个有趣的C++问题
- 一个有趣的C问题
- 发现一个有趣的问题。
- 一个有趣的多线程问题
- linux一个有趣的问题
- ListView解决嵌套冲突3种办法
- ExecutorService——shutdown方法和awaitTermination方法
- Uinty利用XML来本地保存场景中的数据
- 只知编程
- AndroidStudio的一些实用技巧
- 【SHELL】一个非常有趣的问题
- MySql表结构修改详解
- 安卓 支付 问题
- 史上最详细的vsftpd配置文件讲解
- docker学习-进入的container及创建本地镜像
- 使用pods的时候再次遇到了一些困难
- Java基础知识点收集
- JAVA时间格式化处理
- 容器监控—阿里云&容器内部服务监控