Každý den používám dva verzovací systémy – Subversion a Git. Základní operace provádím klávesovou zkratkou pomocí příkazového řádku ve SciTE a moc mě nebaví si u každého projektu nastavovat, který verzovací systém používá. Napsal jsem si proto jednoduchý skript, který verzovací systém vybere automaticky podle toho, jestli v aktuálním adresáři je nebo není podadresář .svn
. Používám ho jen se základními příkazy diff
, commit
a log
, které jsou v obou verzovacích systémech. Další příkazy by se daly sjednotit buď pomocí aliasů Gitu nebo upravením předávaných parametrů v tomto skriptu.
var command = 'Git\\bin\\git';
var fso = new ActiveXObject('Scripting.FileSystemObject');
if (fso.FolderExists('.svn')) {
command = 'Subversion\\bin\\svn';
}
command = WScript.ScriptFullName.replace(/[^\\]+\\[^\\]+$/, '') + command;
for (var i=0; i < WScript.Arguments.length; i++) {
var arg = WScript.Arguments(i);
command += ' ' + (/ /.test(arg) ? '"' + arg + '"' : arg);
}
//~ WScript.Echo(command);
var shell = new ActiveXObject("WScript.Shell");
var output = shell.Exec(command).StdOut.ReadAll();
if (output) {
WScript.Echo(output.replace(/\n$/, ''));
}
Skript jsem napsal v JavaScriptu, aby neměl závislost na PHP. Pod Windows se dá spustit příkazem CScript //Nologo vcs.js
.
Diskuse je zrušena z důvodu spamu.