svn自动更新,纯命令行

SVN自动更新(纯SVN命令行)

点h文件

#ifndef WIDGET_H
#define WIDGET_H

#include

struct SVNPATH
{
QString dirSvnPath;
QString dirLocalPath;
};

class Widget : public QWidget
{
Q_OBJECT

public:
Widget( QWidget *parent = nullptr );
~Widget();
public slots:
void scanDir(); //扫描文件夹,判断是否有文件或目录存在
public:
void checkoutSvndata( QString svnPath, QString localPath ); //将SVN上的数据checkout到本地文件夹

int getSvnInfolog( QString localPath, QString svnpath, QString savePath  );  //获取svn上目前的版本号
int getLocalnfolog( QString localPath, QString savePath ); //获取local目前的版本号

void getLocalDirlog( QString localPath, QString savePath ); //获取本地文件夹的log
void getSvnlog( QString localPath, QString svnPath, QString savePath ); //获取svn上面的log



void versionlogUpdate( QString savePath );  //比较两个文件的信息,将更改文件co下来


QStringList getLocalDirfile( QString localPath ); //获取本地文件夹信息
QStringList getSvnDirfile( QString localPath, QString svnPath );  //获取svn上文件夹信息
void deletFile( QStringList localList, QStringList svnList );

void downFile( QStringList localList, QStringList svnList );
void checkDirisNull( QString localPath );  //检查目录是否为空,为空则删除

//删除文件前3行
void  DeleteOneline( int nNum, QString& strall );
void deleteOnelineInFile( int nNumLine, QString filename );

private:
QString localPath;
QString svnPath;
QString savePath;

};

#endif // WIDGET_H

=================================================

点cpp

#include “widget.h”
#include
#include
#include
#include
Widget::Widget( QWidget *parent )
: QWidget( parent )
{
localPath = “/data/SvnData/UpdateSvn/build/svndata”;
svnPath = “svn://192.168.3.89/svndata”;
savePath = “/data/SvnData/UpdateSvn/build/svndata”;

QTimer *timer = new QTimer();
connect( timer, &QTimer::timeout, this, &Widget::scanDir );
timer->start( 10000 );

}

Widget::~Widget()
{

}

void Widget::scanDir( /QString localPath/ )
{
QStringList Allnamedirlist; //读取最初路径时获取的文件夹列表

QString strPath = localPath;
QDir dir( strPath );
strPath = dir.fromNativeSeparators( strPath );
if( !dir.exists() )
{
    Allnamedirlist = QStringList( "" );
}
dir.setFilter( QDir::Dirs | QDir::Files | QDir::NoDotAndDotDot );
dir.setSorting( QDir::Name );
Allnamedirlist = dir.entryList();

if( Allnamedirlist.isEmpty() )
{
    qDebug() << "The dir is empty!!";
    checkoutSvndata( svnPath, localPath );
}
else
{
    qDebug() << "The dir is not empty!!";

    if( getLocalnfolog( localPath, savePath ) == getSvnInfolog( localPath, svnPath, savePath ) )
    {
        qDebug() << "The version number information is consistent,There is no need to do anything";
        QStringList localFileList = getLocalDirfile( localPath );
        QStringList svnFileList = getSvnDirfile( localPath, svnPath );
        deletFile( localFileList, svnFileList );   //删除本地上 svn没有的文件
        downFile( localFileList, svnFileList );   //下载本地没有的文件
        checkDirisNull( localPath );   //删除空目录
        checkDirisNull( localPath );
        checkDirisNull( localPath );
        checkDirisNull( localPath );
    }
    else if( getLocalnfolog( localPath, savePath ) < getSvnInfolog( localPath, svnPath, savePath ) )
    {
        //读取log文件,查看更改信息,然后更新相关文件
        getSvnlog( localPath, svnPath, savePath );    //获取svn的日志文件,存储在本地
        versionlogUpdate( savePath );               //根据log的改变,进行更新或删除
        QStringList localFileList = getLocalDirfile( localPath );
        QStringList svnFileList = getSvnDirfile( localPath, svnPath );
        deletFile( localFileList, svnFileList );   //删除本地上 svn没有的文件
        downFile( localFileList, svnFileList );   //下载本地没有的文件
        checkDirisNull( localPath );   //删除空目录
        checkDirisNull( localPath );
        checkDirisNull( localPath );
        checkDirisNull( localPath );
    }
}

}</

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值