VS.Net 2003项目删除VSS信息的脚本是
墨初 知识笔记 121阅读
我在谷歌上找到的。之前用过一次,后来没发现。今天终于又找到了。把它作为备忘录写在这里。这个脚本好像是外国人写的,VSS信息被完全去掉了。用法:将这段代码另存为RemoveVssInfo.js,与xxx.sln文件放在同一个文件夹中,双击执行。代码如下:////Global-Vardeletebyforce。varconsoleOnly=true vardefaulttime out=1 ' color : rgba(0,0,0,1)'varshowDetails=falsevarWSShell瓦尔夫索;varcurrentFoldervardeleted=0;varmodified=0;varForReading=1,ForWriting=2,for appending=8;varCharSetDefault=
pan> -2, CharSetUnicode = -1, CharSetAscii = 0;var AttrNormal = 0, AttrReadOnly = 1, AttrHidden = 2, AttrSystem = 4,
AttrVolume = 8, AttrDirectory = 16, AttrArchive = 32, AttrAlias = 1024,
AttrCompressed = 2048;
Init();
Main();
//Test();
/// Main ------------------------------------------------------
function Main() {
var text;
// say hello
text = "Remove from SourceSafe has started.";
Out(text,true);
COut("Working folder: \r\n"+ currentFolder);
// delete ;
// *.suo, *.eto, *.vssscc, *.vspscc, vssver.scc, mssccprj.scc
DeleteFiles("[.]*([.]suo$|[.]eto$|[.]vssscc$|[.]vspscc$|vssver[.]scc$|mssccprj[.]scc$)");
// modify files
// *.etp, *.sln, *.csproj
ModifyFiles("[.]*([.]etp$|[.]sln$|[.]csproj$)");
// say goodbye
text = "Remove from SourceSafe has finished. \r\n\r\n"
+ "Deleted ;\t" + deleted;+ "\r\n"
+ "Modified ;\t" + modified;+ "\r\n";
Out(text,false);
}
function Init() {
// detect command line
try {
WScript.StdOut.WriteLine(" ");
} catch (e) {
consoleOnly = false;
}
// initialize
WSShell = new ActiveXObject("WScript.Shell");
fso = new ActiveXObject("Scripting.");
currentFolder = GetCurrentFolder();
}
///
// getcurrent folder
function GetCurrentFolder() {
return fso.GetFolder(fso.Get).ParentFolder);
}
// delete
function DeleteFiles(mask) {
var ;= FindFiles(mask);
var i;
Out("Deleting files", true);
for (i=0; i<++) {
try {
fso.Delete[i], deleteByForce);
deleted;++;
} catch (e) {
WScript.echo(e.Message);
}
}
if (deleted;== 0) {
COut("No .");
}
}
// find ;
function FindFiles(mask) {
return GetFiles(currentFolder, mask);
}
// determine, if
function MatchesMask() {
return new RegExp(mask).test(file);
}
// get
function GetFiles(folder, mask) {
var result = new Array();
// do
var ;= new Enumerator(folder.Files);
for (; !(); ()) {
if (MatchesMask((), mask)) {
result.push("" + ());
}
}
// do subfolders in current folder
var folders = new Enumerator(folder.SubFolders);
for (; !folders.atEnd(); folders.moveNext()) {
result = result.concat(GetFiles(folders.item(), mask));
}
return result;
}
/// Output ------------------------------------------------------
// output
function Out(text, useTimeOut) {
if (useTimeOut) {
useTimeOut = defaultTimeOut;
} else {
useTimeOut = -1;
}
if (consoleOnly) {
WScript.StdOut.WriteLine(text);
} else {
WSShell.Popup(text, useTimeOut, "Remove from SourceSafe");
}
}
// output
function COut(text, useTimeOut) {
if (useTimeOut) {
useTimeOut = defaultTimeOut;
} else {
useTimeOut = -1;
}
if (consoleOnly) {
WScript.StdOut.WriteLine(text);
}
}
/// Modify ------------------------------------------------------
// modify all
function ModifyFiles(mask) {
var ;= FindFiles(mask);
var i;
Out("Modifying files", true);
for (i=0; i<++) {
// WScript.echo(files[i]);
// try {
Modify(files[i]));
modified;++;
// } catch (e) {
// WScript.echo(e.description);
// }
}
if (modified;== 0) {
COut("No .");
}
}
function Modify) {
switch (fso.GetExtensionName().toLowerCase()) {
case "etp":
Modify(file);
break;
case "sln":
Modify(file);
break;
case "csproj":
Modify(file);
break;
}
}
function Read) {
var stream = (ForReading, CharSetDefault);
text = stream.ReadAll();
stream.Close();
return text;
}
function Write) {
var ro = ((;& AttrReadOnly) != 0);
if (ro) ;-= AttrReadOnly;
var stream = (ForWriting, CharSetDefault);
stream.Write(text);
stream.Close();
if (ro) ;+= AttrReadOnly;
}
// remove element <SourceControlSettings></SourceControlSettings>
function Modify(;{
var text;
var re1 = new RegExp('(\\s*<SourceControlSettings(\\s[^>]*)?>[.\\s\\S\\r\\n]*<\\/SourceControlSettings>)','m');
text = Read);
text = text.replace(re1, "");
Write);
}
// remove section GlobalSection(SourceCodeControl) = preSolution EndGlobalSection
function Modify(;{
var text;
var re1 = new RegExp('(\\s*GlobalSection\\(SourceCodeControl\\))[.\\r\\n\\s\\S]*?EndGlobalSection','m');
text = Read);
text = text.replace(re1, "");
Write);
}
// remove lines with SccProjectName, SccLocalPath, SccAuxPath, SccProvider
function Modify(;{
var text;
var re1 = new RegExp('(^\\s*SccProjectName = .*$)', 'm');
var re2 = new RegExp('(^\\s*SccLocalPath = .*$)', 'm');
var re3 = new RegExp('(^\\s*SccAuxPath = .*$)', 'm');
var re4 = new RegExp('(^\\s*SccProvider = .*$)', 'm');
text = Read);
text = text.replace(re1, "");
text = text.replace(re2, "");
text = text.replace(re3, "");
text = text.replace(re4, "");
Write);
}

标签: