熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> .NET編程 >> 正文

svn實現垃圾清理的方法及代碼

2013-11-13 09:58:44  來源: .NET編程 

  以前使用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放在要清理的目錄下雙擊運行即可


From:http://tw.wingwit.com/Article/program/net/201311/12181.html
  • 上一篇文章:

  • 下一篇文章:
  • 推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.