From c78e72b6bb3793375c6d1317a26dfcff773fb4c3 Mon Sep 17 00:00:00 2001 From: deuce <> Date: Fri, 27 May 2011 00:54:11 +0000 Subject: [PATCH] Handle Checked-in, Merged, Updated, and Removed. Protocol handling is now minimally complete. --- exec/load/cvslib.js | 47 ++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 42 insertions(+), 5 deletions(-) diff --git a/exec/load/cvslib.js b/exec/load/cvslib.js index 67d42c02ff..e079062207 100644 --- a/exec/load/cvslib.js +++ b/exec/load/cvslib.js @@ -16,7 +16,9 @@ CVS = new (function () { this.CVSUSER = "anonymous"; this.CVSPASS = ""; this.CVSAUTH = "pserver"; - + + this.files={}; + /* default global options */ this.globalOptions = { 'z': -1, // compression level (0 - 9) @@ -74,7 +76,7 @@ CVS = new (function () { /* default accepted responses */ this.validResponses = { - 'Checked-in': true, // Required + 'Checked-in': true, // Handled 'Checksum': false, 'Clear-rename': false, 'Clear-static-directory':false, @@ -87,7 +89,7 @@ CVS = new (function () { 'M': true, // Handled 'MT': true, // Handled 'Mbinary': false, - 'Merged': true, // Required + 'Merged': true, // Handled 'Mod-time': false, 'Mode': false, 'Module-expansion': false, @@ -96,7 +98,7 @@ CVS = new (function () { 'Patched': false, 'Rcs-diff': false, 'Remove-entry': false, - 'Removed': true, // Required + 'Removed': true, // Handled 'Renamed': false, 'Set-checkin-prog': false, 'Set-static-directory': false, @@ -104,7 +106,7 @@ CVS = new (function () { 'Set-update-prog': false, 'Template': false, 'Update-existing': false, - 'Updated': true, // Required + 'Updated': true, // Handled 'Valid-requests': true, // Handled 'Wrapper-rcsOption': false, 'error': true, // Handled @@ -218,6 +220,11 @@ CVS = new (function () { return ret; } + function recv_file() { + var length=parseInt(this.socket.recvline()); + return this.socket.recv(length); + } + for(;;) { this.verifyConnection(); if(!this.socket.poll(1)) @@ -230,6 +237,36 @@ CVS = new (function () { return response; } switch(cmd[0]) { + case 'Checked-in': + var directory=cmd[1]; + var repofile=this.socket.recvline(65535,10); + var entries=this.socket.recvline(65535,10); + + log(LOG_INFO, directory+(entries.split('/').pop())+" checked in."); + break; + case 'Merged': + case 'Updated': + var directory=cmd[1]; + var repofile=this.socket.recvline(65535,10); + var entries=this.socket.recvline(65535,10); + var mode=this.socket.recvline(65535,10); + var filedata=recv_file(); + + this.files[repofile]={}; + this.files[repofile].meta={}; + this.files[repofile].meta.entries=entries; + this.files[repofile].meta.mode=mode; + this.files[repofile].data=filedata; + this.files[repofile].status=cmd[0]; + + log(LOG_INFO, directory+(entries.split('/').pop())+" "+cmd[0]+"."); + break; + case 'Removed': + var directory=cmd[1]; + var repofile=this.socket.recvline(65535,10); + + log(LOG_INFO, directory+(entries.split('/').pop())+" removed from repository."); + break; case 'M': log(LOG_INFO, cmd[1]); if(js.global.writeln) -- GitLab