电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

svn实现垃圾清理的方法及代码


发布日期:2023/1/20
 

以前使用svn进行代码版本管理svn还是很强大的能几个人同时对同一个文件进行修改只要修改的不是同一处代码svn会自动进行代码合并如果万一沖突了也不要紧手动进行沖突处理吧哈哈现在不用svn了以前的代码里面有很多svn留下的垃圾也就是隐藏的svn文件夹和里面的文件可以占到%的空间一个个手动去清理要烦死故写了个小工具自动清理svn垃圾原理很简单遍历文件夹发现是svn文件夹删除之部分代码如下

view plaincopy to clipboardprint?

hFind = FindFirstFile(szFileName &fd);

if (hFind == INVALID_HANDLE_VALUE)

goto Exit;

do

{

// 过滤

if (::lstrcmpi(TEXT() fdcFileName) == || ::lstrcmpi(TEXT() fdcFileName) == )

continue;

::lstrcpy(s fdcFileName);

*(s + ::lstrlen(fdcFileName)) = L\;

// 如果是文件夹则递归

if (fddwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

{

// 删除svn目录我做一个小工作删文件o(∩_∩)o

TCHAR szSvnCmd[MAX_PATH] = {};

TCHAR szSvnPath[MAX_PATH] = {};

::lstrcpy(szSvnCmd TEXT(rmdir /s/q ));

::lstrcat(szSvnCmd TEXT(\));

::lstrcat(szSvnCmd szFileName);

// 本身就是svn目录则直接删除

if ( == ::lstrcmpi(fdcFileName TEXT(svn)))

{

::lstrcpy(szSvnPath szFileName);

::lstrcat(szSvnCmd TEXT(\));

}

else

{

::lstrcpy(szSvnPath szFileName);

::lstrcat(szSvnPath TEXT(\\svn));

::lstrcat(szSvnCmd TEXT(\\svn\));

}

if (!::PathFileExists(szSvnPath))

continue;

printf(删除命令: %s \n szSvnCmd);

#if defined(UNICODE) || defined(_UNICODE)

system(WA(szSvnCmd));

#else

system(szSvnCmd);

#endif

// 递归

ScanDirectory(szFileName);

}

else

{

// 对文件进行处理

// TODO

NULL;

}

}while(::FindNextFile(hFind &fd));

hFind = FindFirstFile(szFileName &fd);

if (hFind == INVALID_HANDLE_VALUE)

goto Exit;

do

{

// 过滤

if (::lstrcmpi(TEXT() fdcFileName) == || ::lstrcmpi(TEXT() fdcFileName) == )

continue;

::lstrcpy(s fdcFileName);

*(s + ::lstrlen(fdcFileName)) = L\;

// 如果是文件夹则递归

if (fddwFileAttributes & FILE_ATTRIBUTE_DIRECTORY)

{

// 删除svn目录我做一个小工作删文件o(∩_∩)o

TCHAR szSvnCmd[MAX_PATH] = {};

TCHAR szSvnPath[MAX_PATH] = {};

::lstrcpy(szSvnCmd TEXT(rmdir /s/q ));

::lstrcat(szSvnCmd TEXT(\));

::lstrcat(szSvnCmd szFileName);

// 本身就是svn目录则直接删除

if ( == ::lstrcmpi(fdcFileName TEXT(svn)))

{

::lstrcpy(szSvnPath szFileName);

::lstrcat(szSvnCmd TEXT(\));

}

else

{

::lstrcpy(szSvnPath szFileName);

::lstrcat(szSvnPath TEXT(\\svn));

::lstrcat(szSvnCmd TEXT(\\svn\));

}

if (!::PathFileExists(szSvnPath))

continue;

printf(删除命令: %s \n szSvnCmd);

#if defined(UNICODE) || defined(_UNICODE)

system(WA(szSvnCmd));

#else

system(szSvnCmd);

#endif

// 递归

ScanDirectory(szFileName);

}

else

{

// 对文件进行处理

// TODO

NULL;

}

}while(::FindNextFile(hFind &fd));

全部的代码和里面编译好的TCleanSVNexe可以到去下载使用时只要把TCleanSVNexe放在要清理的目录下双击运行即可

上一篇:session和cookie的最深刻理解

下一篇:自己用的一个MVC Pager