Svn目录删除器
公司用SVN做版本管理,发布的时候每个目录都有一个隐藏的.svn目录
每次发布的时候都要手动去删除,挺麻烦的,就写了这个小程序。
不知园子里的朋友是怎么处理的,有好方法麻烦告知。
公司用SVN做版本管理,发布的时候每个目录都有一个隐藏的.svn目录
每次发布的时候都要手动去删除,挺麻烦的,就写了这个小程序。
不知园子里的朋友是怎么处理的,有好方法麻烦告知。
程序下载:https://files.cnblogs.com/freewind/SVNClear.rar
源码下载:https://files.cnblogs.com/freewind/SVNClear_src.rar
每次发布的时候都要手动去删除,挺麻烦的,就写了这个小程序。
不知园子里的朋友是怎么处理的,有好方法麻烦告知。
源码
/**//*
* Copyright 2007 Hujiajian
* Coded by Jiajian
* Created at:2007-4-17
* Last Changed at:2007-4-18
*
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace SVNClear
{
class Program
{
读配置文件#region 读配置文件
//目录关键字
private readonly static string key = ConfigString("key");
//匹配类型
private readonly static string type = ConfigString("type");
#endregion
static void Main(string[] args)
{
Console.WriteLine("项目路径:");
string path = Console.ReadLine();
string res = DoClear(path);
while(res == "路径不存在")
{
Console.WriteLine("路径不存在,请重新输入");
path = Console.ReadLine();
res = DoClear(path);
}
Console.WriteLine(res);
Console.Read();
}
/**//// <summary>
/// 操作入口
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
private static string DoClear(string path)
{
if (!Directory.Exists(path))
{
return "路径不存在";
}
//递归项目目录
string[] dirs = Directory.GetDirectories(path);
foreach (string dir in dirs)
{
DoClear(dir);
}
//判断是svn目录则删除
if (IsSvnDir(path))
{
DeleteDir(path); //递归操作
//DeleteDirNoRecursion(path); //非递归操作
}
return "删除成功";
}
/**//// <summary>
/// 判断是否Svn目录
/// </summary>
/// <param name="dir"></param>
/// <returns></returns>
private static bool IsSvnDir(string dir)
{
int startindex = dir.LastIndexOf("\\");
string dirName = dir.Substring(startindex + 1);
switch(type)
{
case "include":
if (dirName.Contains(key))
{
return true;
}
break;
case "start":
if (dirName.StartsWith(key))
{
return true;
}
break;
case "end":
if (dirName.EndsWith(key))
{
return true;
}
break;
default:
if (dirName.Equals(key))
{
return true;
}
break;
}
return false;
}
/**//// <summary>
/// 删除操作 递归实现
/// </summary>
/// <param name="dir"></param>
private static void DeleteDir(string dir)
{
//递归目录
string[] dirs = Directory.GetDirectories(dir);
foreach (string dir2 in dirs)
{
DeleteDir(dir2);
}
//delete files and dirctories
string[] files = Directory.GetFiles(dir);
//删除文件
foreach (string file in files)
{
FileInfo f = new FileInfo(file);
f.Attributes = FileAttributes.Normal;
f.Delete();
}
//删除目录
Directory.Delete(dir,true);
}
/**//// <summary>
/// 删除操作 非递归实现
/// </summary>
/// <param name="dir"></param>
private static void DeleteDirNoRecursion(string dir)
{
Stack<string> stack = new Stack<string>();
while(dir != "")
{
string[] dirs = Directory.GetDirectories(dir);
if(dirs.Length > 0)
{
stack.Push(dir);
dir = dirs[0];
}
else
{
//delete files and dirctory
string[] files = Directory.GetFiles(dir);
//删除文件
foreach (string file in files)
{
FileInfo f = new FileInfo(file);
f.Attributes = FileAttributes.Normal;
f.Delete();
Console.WriteLine(f.Name);
}
//删除目录
Directory.Delete(dir);
Console.WriteLine(dir);
if(stack.Count > 0)
{
dir = stack.Pop();
}
else
{
dir = "";
}
}
}
}
/**//// <summary>
/// 获取配置文件信息(string)
/// </summary>
/// <param name="key">关键字</param>
/// <returns></returns>
private static string ConfigString(string key)
{
return System.Configuration.ConfigurationManager.AppSettings[key];
}
}
}
/**//*
* Copyright 2007 Hujiajian
* Coded by Jiajian
* Created at:2007-4-17
* Last Changed at:2007-4-18
*
*/
using System;
using System.Collections.Generic;
using System.Text;
using System.IO;
namespace SVNClear
{
class Program
{
读配置文件#region 读配置文件
//目录关键字
private readonly static string key = ConfigString("key");
//匹配类型
private readonly static string type = ConfigString("type");
#endregion
static void Main(string[] args)
{
Console.WriteLine("项目路径:");
string path = Console.ReadLine();
string res = DoClear(path);
while(res == "路径不存在")
{
Console.WriteLine("路径不存在,请重新输入");
path = Console.ReadLine();
res = DoClear(path);
}
Console.WriteLine(res);
Console.Read();
}
/**//// <summary>
/// 操作入口
/// </summary>
/// <param name="path"></param>
/// <returns></returns>
private static string DoClear(string path)
{
if (!Directory.Exists(path))
{
return "路径不存在";
}
//递归项目目录
string[] dirs = Directory.GetDirectories(path);
foreach (string dir in dirs)
{
DoClear(dir);
}
//判断是svn目录则删除
if (IsSvnDir(path))
{
DeleteDir(path); //递归操作
//DeleteDirNoRecursion(path); //非递归操作
}
return "删除成功";
}
/**//// <summary>
/// 判断是否Svn目录
/// </summary>
/// <param name="dir"></param>
/// <returns></returns>
private static bool IsSvnDir(string dir)
{
int startindex = dir.LastIndexOf("\\");
string dirName = dir.Substring(startindex + 1);
switch(type)
{
case "include":
if (dirName.Contains(key))
{
return true;
}
break;
case "start":
if (dirName.StartsWith(key))
{
return true;
}
break;
case "end":
if (dirName.EndsWith(key))
{
return true;
}
break;
default:
if (dirName.Equals(key))
{
return true;
}
break;
}
return false;
}
/**//// <summary>
/// 删除操作 递归实现
/// </summary>
/// <param name="dir"></param>
private static void DeleteDir(string dir)
{
//递归目录
string[] dirs = Directory.GetDirectories(dir);
foreach (string dir2 in dirs)
{
DeleteDir(dir2);
}
//delete files and dirctories
string[] files = Directory.GetFiles(dir);
//删除文件
foreach (string file in files)
{
FileInfo f = new FileInfo(file);
f.Attributes = FileAttributes.Normal;
f.Delete();
}
//删除目录
Directory.Delete(dir,true);
}
/**//// <summary>
/// 删除操作 非递归实现
/// </summary>
/// <param name="dir"></param>
private static void DeleteDirNoRecursion(string dir)
{
Stack<string> stack = new Stack<string>();
while(dir != "")
{
string[] dirs = Directory.GetDirectories(dir);
if(dirs.Length > 0)
{
stack.Push(dir);
dir = dirs[0];
}
else
{
//delete files and dirctory
string[] files = Directory.GetFiles(dir);
//删除文件
foreach (string file in files)
{
FileInfo f = new FileInfo(file);
f.Attributes = FileAttributes.Normal;
f.Delete();
Console.WriteLine(f.Name);
}
//删除目录
Directory.Delete(dir);
Console.WriteLine(dir);
if(stack.Count > 0)
{
dir = stack.Pop();
}
else
{
dir = "";
}
}
}
}
/**//// <summary>
/// 获取配置文件信息(string)
/// </summary>
/// <param name="key">关键字</param>
/// <returns></returns>
private static string ConfigString(string key)
{
return System.Configuration.ConfigurationManager.AppSettings[key];
}
}
}
程序下载:https://files.cnblogs.com/freewind/SVNClear.rar
源码下载:https://files.cnblogs.com/freewind/SVNClear_src.rar