linux命令实现git代码copy到svn仓库并提交

it2024-12-19  12

        项目需要,将git仓库master代码copy到svn仓库的主干上,需要在linux上实现,只能老老实实敲命令了。

1. 解决方案

        非常原始,首先创建/git目录,然后clone git仓库master最新代码,copy到/svn目录下,删除.git文件,然后使用svn add,commit到svn的分支上。

2. 直接写命令:

#创建git文件夹并进入目录,mkdir -p:递归创建目录,即使上级目录不存在,会按目录层级自动创建目录 mkdir -p /code/git chmod -R 755 /code/git cd /code/git #clone git代码master最新代码,username和password自行填写 git clone http://username:password@git.xxx.com/demo.git #创建svn文件夹,并设置权限 mkdir -p /code/git chmod -R 755 /code/git #checkout svn 仓库 base分支,--no-auth-cache:不会弹出提示进行yes/no确认 svn co http://svn.xxx.com/demo/base --username xxx --password xxx --no-auth-cache #复制git代码数据到svn代码库目录下,demo为git库名称,base为svn仓库分支名目录 #cp -a复制所有文件,后面的/demo/.,其中的点[.]作用是把.开头的隐藏文件一起复制过去 #复制所有文件是因为代码存在.开头文件,防止没有复制全 cp -a /code/git/demo/. /code/svn/base #进入svn仓库目录 cd /code/svn/base #删除一同复制过来的.git文件 rm -rf .git/ #进行svn add clean commit操作 sudo svn cleanup #svn add命令在linux上回忽略.开头的隐藏文件,钱买你添加 find . | xargs 可以将.文件一同提交 find . | xargs svn add --force *.* sudo svn cleanup sudo svn commit -m 'init' --username xxx --password xxx --no-auth-cache

3. 遇到的问题:

     a)  cp -r 没有复制点[.]开头的文件,解决办法:

         使用cp -a /code/git/demo/. /code/svn/base,在最后加一个点(还需要删除.git文件)

     b)svn add 命令忽略了点[.]开头的文件,解决办法:

        使用Linux xargs命令 : find . | xargs svn add --force *.* 

最新回复(0)