删除TFS版本文件以及项目中的残留节点
来源:互联网 发布:搜狐网络大厦it 编辑:程序博客网 时间:2024/05/17 08:12
项目开发过程中,为了提高开发效率,统一代码版本,方便管理,程序员都喜欢使用一些版本控制工具,如:SVN、VSS、TFS、Git等。我这里使用的是TFS管理工具,由于是多年前的旧项目,TFS服务器早就GG了,每次打开都有提示
---------------------------
Microsoft Visual Studio
---------------------------
Team Foundation Server 版本控制
您正在打开的解决方案已绑定到以下 Team Foundation Server 上的源代码管理: http://xxx.xxx.xxx。是否要联系此服务器以尝试启用源代码管理集成?
---------------------------
是(Y) 否(N) 帮助
---------------------------
因此在网上查看了一些TFS资料后,写了个小工具,用来清除TFS版本控制相关文件和文件中的节点
Team Foundation Server
// 删除TFS版本文件和TFS项目残留节点 class Program { // 委托定义:带一个字符串的委托 delegate void DWriteline(string message); // 委托方法 static DWriteline m_Writeline = Console.WriteLine; // 入参文件路径 static System.IO.DirectoryInfo m_DirectoryInfo; // 文件深度,默认等于2,最多是3 static int m_Level; // 程序入口 static void Main(string[] args) { do { m_Level = 2; /* * 1.录入项目路径 * 2.删除所有的*.vssscc,*.vspscc文件 * 3.清除解决方案文件(*.sln)文件中的版本标记节点 * GlobalSection(TeamFoundationVersionControl) = preSolution 与 EndGlobalSection及其节点中的所有内容 * 4.清除项目文件(*.project)删除节点 * <SccProjectName>???</SccProjectName> * <SccLocalPath>???</SccLocalPath> * <SccAuxPath>???</SccAuxPath> * <SccProvider>???</SccProvider> */ m_Writeline("请录入有效的项目路径(退出请输入X/x):"); string folder = Console.ReadLine(); if (folder.ToUpper() == "X") { break; } if (CheckFolder(folder) == false) continue; DeleteVersionSectionAndFile(m_DirectoryInfo, m_Level); } while (true); } // 检查路径是否有效 static bool CheckFolder(string folder) { if (System.IO.Directory.Exists(folder.Replace("\"", "")) == false) { m_Writeline("无效的目录"); return false; } m_DirectoryInfo = new System.IO.DirectoryInfo(folder.Replace("\"", "")); // 如果当前目录含(*.sln)文件则文件深度加一(项目深度默认深度为二) var sln = m_DirectoryInfo.GetFiles("*.sln"); if (sln.Length == 0) { m_Level++; } return true; } // 删除版本节点和版本文件 static void DeleteVersionSectionAndFile(System.IO.DirectoryInfo direcoryInfo, int level) { if (level > 0) { DeleteSlnVersionSection(direcoryInfo); DeleteProjectVersionSection(direcoryInfo); DeleteTFSVersionFile(direcoryInfo); var directories = direcoryInfo.GetDirectories(); if (directories != null) { level--; foreach (var directory in directories) { DeleteVersionSectionAndFile(new System.IO.DirectoryInfo(directory.FullName), level); } } } } // 删除解决方案中的版本节点 static void DeleteSlnVersionSection(System.IO.DirectoryInfo direcoryInfo) { var sln = direcoryInfo.GetFiles("*.sln"); foreach (var file in sln) { StringBuilder slnBuilder = new StringBuilder(); System.IO.StreamReader slnReader = file.OpenText(); string line; int flag = 0; int count = 0; do { line = slnReader.ReadLine(); if (line == null) break; if (line.IndexOf("GlobalSection(TeamFoundationVersionControl)") > -1) { flag = 1; count++; continue; } if (flag == 1 && line.IndexOf("EndGlobalSection") > -1) { flag = 0; continue; } if (flag == 0) { slnBuilder.AppendLine(line); } } while (line != null); slnReader.Close(); if (count > 0) { System.IO.StreamWriter slnWriter = new System.IO.StreamWriter(file.FullName, false, Encoding.UTF8); slnWriter.Write(slnBuilder.ToString()); slnWriter.Close(); } } } // 删除项目文件中的版本节点 static void DeleteProjectVersionSection(System.IO.DirectoryInfo direcoryInfo) { var sln = direcoryInfo.GetFiles("*.csproj"); foreach (var file in sln) { StringBuilder slnBuilder = new StringBuilder(); System.IO.StreamReader slnReader = file.OpenText(); string line; int count = 0;//用于标记是否还有版本标记 do { line = slnReader.ReadLine(); if (line == null) { break; } if (line.IndexOf("<SccProjectName>") > -1 || line.IndexOf("<SccLocalPath>") > -1 || line.IndexOf("<SccAuxPath>") > -1 || line.IndexOf("<SccProvider>") > -1) { count++; continue; } else { slnBuilder.AppendLine(line); } } while (line != null); slnReader.Close(); if (count > 0) { System.IO.StreamWriter slnWriter = new System.IO.StreamWriter(file.FullName, false, Encoding.UTF8); slnWriter.Write(slnBuilder.ToString()); slnWriter.Close(); } } } // 删除版本文件 static void DeleteTFSVersionFile(System.IO.DirectoryInfo direcoryInfo) { // 查找项目解决方案版本控制 var vssscc = direcoryInfo.GetFiles("*.vssscc"); foreach (var file in vssscc) System.IO.File.Delete(file.FullName); // 查找项目文件版本控制 var vspscc = direcoryInfo.GetFiles("*.vspscc"); foreach (var file in vspscc) System.IO.File.Delete(file.FullName); } }
阅读全文
0 0
- 删除TFS版本文件以及项目中的残留节点
- TFS团队代码管理器-项目添加以及项目删除
- 删除TFS团队项目
- 删除TFS项目
- TFS删除项目方法
- 删除TFS团队项目
- TFS上删除项目
- 卸载完应用,无法删除残留文件
- 手把手教你:python中的shutil.rmtree()删除目录,有文件残留的原因
- MFC写XML文件 以及 删除节点
- TFS 2010中删除项目
- TFS Preview 删除项目命令
- 如何使用TFS Delete Project tool 删除 TFS项目
- 使用TFS-如何删除TFS上项目的正确姿势
- TFS中删除文件和重命名文件
- 删除项目中的.svn文件
- 删除项目中的.svn文件
- 为TFS中指定组中的项目添加和删除指定权限C#代码实现
- 同一个标签定义多个样式优先级问题
- Shell---循环结构
- Leetcode 5. Longest Palindromic Substring
- iOS开发中方法延迟执行的几种方式
- android 智能代码提示 && 代码风格
- 删除TFS版本文件以及项目中的残留节点
- JSP
- mysql
- python函数学习一(跳出函数)
- Handler进程间通信
- PHP Curl工具类
- VueJs2.0建议学习路线
- 设计模式大杂烩(24种设计模式的总结以及学习设计模式的几点建议)
- Pythone3.X的dict字典