cvsshell-devel Mailing List for CvsShell (Page 6)
Status: Beta
Brought to you by:
stefanheimann
You can subscribe to this list here.
2002 |
Jan
|
Feb
|
Mar
(82) |
Apr
|
May
(14) |
Jun
(3) |
Jul
(27) |
Aug
(18) |
Sep
(10) |
Oct
(1) |
Nov
(8) |
Dec
|
---|---|---|---|---|---|---|---|---|---|---|---|---|
2003 |
Jan
|
Feb
(1) |
Mar
(1) |
Apr
(63) |
May
(2) |
Jun
(2) |
Jul
(2) |
Aug
|
Sep
(3) |
Oct
(2) |
Nov
|
Dec
|
2004 |
Jan
|
Feb
(5) |
Mar
|
Apr
|
May
|
Jun
|
Jul
(1) |
Aug
|
Sep
|
Oct
|
Nov
|
Dec
|
From: Stefan H. <ste...@us...> - 2002-07-27 15:34:15
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv12224/src Added Files: entry_parser.py Log Message: just a try... --- NEW FILE: entry_parser.py --- import sys, re, os, stat dirname = os.path.dirname from time import * lineRe = re.compile(r'(?P<isdir>D?)/(?P<name>[^/]*)/(?P<revision>[^/]*)/(?P<mtime>[^/]*)//') def parse(filename): dir = dirname(dirname(filename)) f = open(filename) for line in f.readlines(): result = lineRe.match(line) if not result: continue if result.group('isdir'): print 'directory:', result.group('name') else: name = result.group('name') revision = result.group('revision') repTime = mktime(strptime(result.group('mtime'))) localTime = mktime(gmtime(os.stat(os.path.join(dir, name))[stat.ST_MTIME])) # this is bit dirty if repTime == localTime: print name, 'with revision', revision, 'was NOT modified.' else: print name, 'with revision', revision, 'was modified.' if __name__ == '__main__': if len(sys.argv) < 2: print 'error' sys.exit(1) parse(sys.argv[1]) |
From: Stefan H. <ste...@us...> - 2002-07-27 14:55:11
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv4319 Modified Files: interactive_app.py Log Message: forget to commmit some changes Index: interactive_app.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/interactive_app.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** interactive_app.py 27 Jul 2002 14:42:13 -0000 1.11 --- interactive_app.py 27 Jul 2002 14:55:08 -0000 1.12 *************** *** 37,41 **** readline.parse_and_bind("tab: complete") readline.set_completer_delims(' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>?') - # readline.set_completer(complete) def setHistoryFile(self,filename): --- 37,40 ---- *************** *** 104,110 **** raise AppError, 'evalCommand must be redefined!' - def complete(self, text, state): - if state == 0: - dir = dirname(text) - print 'text: ', text - if state == 0: return 'd/' --- 103,104 ---- |
From: Stefan H. <ste...@us...> - 2002-07-27 14:42:16
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv1211/src Modified Files: interactive_app.py Log Message: Index: interactive_app.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/interactive_app.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** interactive_app.py 27 Jul 2002 13:32:32 -0000 1.10 --- interactive_app.py 27 Jul 2002 14:42:13 -0000 1.11 *************** *** 23,30 **** from app import App, AppError - def complete(text, state): - print 'text: ', text - if state == 0: return 'd/' - class InteractiveApp(App): --- 23,26 ---- *************** *** 40,44 **** else: readline.parse_and_bind("tab: complete") ! readline.set_completer(complete) def setHistoryFile(self,filename): --- 36,41 ---- else: readline.parse_and_bind("tab: complete") ! readline.set_completer_delims(' \t\n`~!@#$%^&*()-=+[{]}\\|;:\'",<>?') ! # readline.set_completer(complete) def setHistoryFile(self,filename): *************** *** 107,108 **** --- 104,110 ---- raise AppError, 'evalCommand must be redefined!' + def complete(self, text, state): + if state == 0: + dir = dirname(text) + print 'text: ', text + if state == 0: return 'd/' |
From: Stefan H. <ste...@us...> - 2002-07-27 14:42:16
|
Update of /cvsroot/cvsshell/cvsshell In directory usw-pr-cvs1:/tmp/cvs-serv1211 Modified Files: ChangeLog Log Message: Index: ChangeLog =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/ChangeLog,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** ChangeLog 27 Jul 2002 09:05:37 -0000 1.7 --- ChangeLog 27 Jul 2002 14:42:13 -0000 1.8 *************** *** 19,23 **** - improved status command: the repository revision, the working revision and the time of last modification is displayed, too. ! * Version 0.2.1 --- 19,24 ---- - improved status command: the repository revision, the working revision and the time of last modification is displayed, too. ! - improved readline support: completion is now possible for more than one ! directory * Version 0.2.1 |
From: Stefan H. <ste...@us...> - 2002-07-27 13:32:36
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv21925/src Modified Files: interactive_app.py Log Message: Index: interactive_app.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/interactive_app.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** interactive_app.py 26 Jul 2002 15:44:25 -0000 1.9 --- interactive_app.py 27 Jul 2002 13:32:32 -0000 1.10 *************** *** 23,26 **** --- 23,30 ---- from app import App, AppError + def complete(text, state): + print 'text: ', text + if state == 0: return 'd/' + class InteractiveApp(App): *************** *** 34,40 **** self.printErr("Could not import readline.\nHistory browsing " \ "and tab completion will not be available.") - return else: readline.parse_and_bind("tab: complete") def setHistoryFile(self,filename): --- 38,44 ---- self.printErr("Could not import readline.\nHistory browsing " \ "and tab completion will not be available.") else: readline.parse_and_bind("tab: complete") + readline.set_completer(complete) def setHistoryFile(self,filename): |
From: Stefan H. <ste...@us...> - 2002-07-27 09:05:41
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv11318/src Modified Files: cvs_cmds.py cvs_shell.py Log Message: improved status cmd Index: cvs_cmds.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/cvs_cmds.py,v retrieving revision 1.12 retrieving revision 1.13 diff -C2 -d -r1.12 -r1.13 *** cvs_cmds.py 26 Jul 2002 18:12:07 -0000 1.12 --- cvs_cmds.py 27 Jul 2002 09:05:38 -0000 1.13 *************** *** 32,41 **** """Display status information on checked out files. This command creates a listing with all checked out files and ! their status. The listing can be filtered by setting the variable `filter' in the CONFIG section of ~/.cvsshellrc.""" entries = [] regexHead = re.compile(r'File: (?P<name>\S+)\s+Status: (?P<status>.+)') regexDir = re.compile(r'.*Examining (?P<dir>\S+)') regexUnknown = re.compile(r'^\?\s+(?P<filename>\S+)') --- 32,46 ---- """Display status information on checked out files. This command creates a listing with all checked out files and ! their status. The abbreviation `rr' stands for `repository revision', ! `wr' means working revision. The listing can be filtered by setting the variable `filter' in the CONFIG section of ~/.cvsshellrc.""" + import stat + from time import gmtime,strftime entries = [] regexHead = re.compile(r'File: (?P<name>\S+)\s+Status: (?P<status>.+)') + regexWorkingRev = re.compile(r'\s*Working revision:\s+(\S+)') + regexRepRev = re.compile(r'\s*Repository revision:\s+(\S+)') regexDir = re.compile(r'.*Examining (?P<dir>\S+)') regexUnknown = re.compile(r'^\?\s+(?P<filename>\S+)') *************** *** 54,58 **** entries = [] dir = None ! for line in lines: unknownRes = regexUnknown.search(line) if unknownRes: --- 59,67 ---- entries = [] dir = None ! n = len(lines) ! i = 0 ! while i < n: ! line = lines[i] ! i = i+1 unknownRes = regexUnknown.search(line) if unknownRes: *************** *** 68,72 **** name = headRes.group('name') status = headRes.group('status').strip() ! entries.append(Entry(dir, name, status)) continue dirRes = regexDir.search(line) --- 77,90 ---- name = headRes.group('name') status = headRes.group('status').strip() ! i = i+1 # skip empty line ! workingRev = regexWorkingRev.search(lines[i]).group(1) ! i = i+1 ! repRev = regexRepRev.search(lines[i]).group(1) ! i = i+1 ! try: ! time = strftime('%Y-%m-%d %H:%M', gmtime(os.stat(os.path.join(os.getcwd(), dir, name))[stat.ST_MTIME])) ! except OSError: time = '' ! info = 'rr: ' + repRev + ', wr: ' + workingRev + ', ' + time ! entries.append(Entry(dir, name, status, info)) continue dirRes = regexDir.search(line) Index: cvs_shell.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/cvs_shell.py,v retrieving revision 1.27 retrieving revision 1.28 diff -C2 -d -r1.27 -r1.28 *** cvs_shell.py 19 Jul 2002 11:36:03 -0000 1.27 --- cvs_shell.py 27 Jul 2002 09:05:38 -0000 1.28 *************** *** 28,32 **** from plugable_app import PlugableApp ! VERSION = '0.2.2' NAME ='CvsShell' COPYRIGHT = 'Copyright 2002 Stefan Heimann (ma...@st...).\n' \ --- 28,32 ---- from plugable_app import PlugableApp ! VERSION = '0.3' NAME ='CvsShell' COPYRIGHT = 'Copyright 2002 Stefan Heimann (ma...@st...).\n' \ *************** *** 315,319 **** ! def printListing(self): if not self.listing: self.printErr(self.noListingErrMsg) --- 315,319 ---- ! def printListing(self, footer=None): if not self.listing: self.printErr(self.noListingErrMsg) *************** *** 325,329 **** self.dirtyListing = 0 else: ! self.listing.printEntries() if self.getDirtyListing(): self.printMsg("Listing may be out-of-date. " \ --- 325,329 ---- self.dirtyListing = 0 else: ! self.listing.printEntries(footer=footer) if self.getDirtyListing(): self.printMsg("Listing may be out-of-date. " \ *************** *** 417,429 **** self.entries.sort(__EntrySorter(self.sortOrder).cmp) ! def printEntries(self, verbose=1): if not self.entries: if verbose: self.app.printMsg('No entries available.') return ! max = 0 for e in self.entries: ! l = len(e.status) ! if l > max: max = l ! formatStr = " %%%dd %%-%ds %%s%%s\n" % (len(`len(self.entries)`), max) oldDir = None id = 0 --- 417,430 ---- self.entries.sort(__EntrySorter(self.sortOrder).cmp) ! def printEntries(self, verbose=1, footer=None): if not self.entries: if verbose: self.app.printMsg('No entries available.') return ! maxStatus = 0 ! maxName = 0 for e in self.entries: ! maxStatus = max(len(e.status), maxStatus) ! maxName = max(len(e.name), maxName) ! formatStr = " %%%dd %%-%ds %%s%%s" % (len(`len(self.entries)`), maxStatus) oldDir = None id = 0 *************** *** 435,439 **** lines.append("%s:\n" % newDir) if os.path.isdir(os.path.join(self.rootDir, e.dir, e.name)): ! isDir = "<dir> " else: isDir = '' --- 436,440 ---- lines.append("%s:\n" % newDir) if os.path.isdir(os.path.join(self.rootDir, e.dir, e.name)): ! isDir = '<dir> ' else: isDir = '' *************** *** 441,447 **** --- 442,451 ---- color = self.app.getConfigMap().get(colorKey, '') s = self.app.col(color, formatStr % (id, e.status, isDir, e.name)) + s = s + (maxName - len(e.name))*' ' + ' ' + e.info + '\n' lines.append(s) id += 1 oldDir = newDir + if footer: + lines.append(footer + '\n') self.app.more(lines) *************** *** 463,471 **** S_DELETED = 'D' # file scheduled for removal has been commited statusToColorKey = None ! def __init__(self, dir, name, status): GetSetProvider.__init__(self) self.dir = dir self.name = name self.status = status if Entry.statusToColorKey is None: Entry.statusToColorKey = {} --- 467,476 ---- S_DELETED = 'D' # file scheduled for removal has been commited statusToColorKey = None ! def __init__(self, dir, name, status, info=''): GetSetProvider.__init__(self) self.dir = dir self.name = name self.status = status + self.info = info if Entry.statusToColorKey is None: Entry.statusToColorKey = {} |
From: Stefan H. <ste...@us...> - 2002-07-27 09:05:41
|
Update of /cvsroot/cvsshell/cvsshell In directory usw-pr-cvs1:/tmp/cvs-serv11318 Modified Files: ChangeLog Log Message: improved status cmd Index: ChangeLog =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/ChangeLog,v retrieving revision 1.6 retrieving revision 1.7 diff -C2 -d -r1.6 -r1.7 *** ChangeLog 19 Jul 2002 11:36:03 -0000 1.6 --- ChangeLog 27 Jul 2002 09:05:37 -0000 1.7 *************** *** 1,9 **** CvsShell Version History ! * Version 0.2.2 + Bugfixes: ! - fixed bug that caused arguments of a command which are delimited by newlines ! to be ignored. --- 1,22 ---- CvsShell Version History ! * Version 0.3 + Bugfixes: ! - fixed bug that caused arguments of a command which are delimited ! by newlines to be ignored. ! - fixed bug that caused options to the update command to be ignored ! (bug ID: 584831) ! - fixed bug ID 560963 ! ! + Enhancements: ! - new command: scan. scan reads all files recursivly starting at a ! given directory (or the current working directory if none is given) ! and creates a directory listing without contacting the server. You ! can refer to the ids in the listing in all subsequent commands. ! - improved status/refresh/update command: you now can specify the ! directory to operate on. ! - improved status command: the repository revision, the working revision and ! the time of last modification is displayed, too. |
From: Stefan H. <ste...@us...> - 2002-07-27 09:04:00
|
Update of /cvsroot/cvsshell/cvsshell/testing In directory usw-pr-cvs1:/tmp/cvs-serv11180/testing Removed Files: refstdout refstderr run-test.py testinput Log Message: tests were not good, so I removed them --- refstdout DELETED --- --- refstderr DELETED --- --- run-test.py DELETED --- --- testinput DELETED --- |
From: <no...@so...> - 2002-07-26 18:13:35
|
Feature Requests item #537083, was opened at 2002-03-30 13:42 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452215&aid=537083&group_id=48175 Category: None Group: None >Status: Closed Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: Listing out of date Initial Comment: The warning that the listing is out of date should be printed colorized. ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452215&aid=537083&group_id=48175 |
From: <no...@so...> - 2002-07-26 18:12:50
|
Bugs item #584831, was opened at 2002-07-22 12:27 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452212&aid=584831&group_id=48175 Category: None Group: None Status: Closed Resolution: Fixed Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: update commit does not propagate options Initial Comment: for exmple: update -j simple-formdata . is not executed with the -j option ---------------------------------------------------------------------- >Comment By: Stefan Heimann (stefanheimann) Date: 2002-07-26 20:12 Message: Logged In: YES user_id=327401 fixed in 0.3 ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452212&aid=584831&group_id=48175 |
From: Stefan H. <ste...@us...> - 2002-07-26 18:12:10
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv6445/src Modified Files: cvs_cmds.py Log Message: fixed bug ID 560963 Index: cvs_cmds.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/cvs_cmds.py,v retrieving revision 1.11 retrieving revision 1.12 diff -C2 -d -r1.11 -r1.12 *** cvs_cmds.py 26 Jul 2002 16:35:37 -0000 1.11 --- cvs_cmds.py 26 Jul 2002 18:12:07 -0000 1.12 *************** *** 271,282 **** else: rest = answ - def __doIt(e,filename): - if e.status == Entry.S_REMOVED: - e.status = Entry.S_DELETED - else: - e.status = Entry.S_OK - return filename try: ! filenames = app.applyOnEntryList(rest, __doIt) try: if filenames: --- 271,276 ---- else: rest = answ try: ! filenames = app.applyOnEntryList(rest, lambda e, fname: fname) try: if filenames: *************** *** 284,288 **** globOpts=globOpts, args=opts+' '+string.join(filenames), fork=0) ! except CvsError: pass except utils.ParseError: # args do not spefiy ids in the current listing try: --- 278,288 ---- globOpts=globOpts, args=opts+' '+string.join(filenames), fork=0) ! def __doIt(e,filename): ! if e.status == Entry.S_REMOVED: ! e.status = Entry.S_DELETED ! else: ! e.status = Entry.S_OK ! app.applyOnEntryList(rest, __doIt) ! except CvsError: return except utils.ParseError: # args do not spefiy ids in the current listing try: *************** *** 290,294 **** args=opts+' '+rest, fork=0) app.setDirtyListing(1) ! except CvsError: pass except AppError, msg: app.printErr(msg) --- 290,294 ---- args=opts+' '+rest, fork=0) app.setDirtyListing(1) ! except CvsError: return except AppError, msg: app.printErr(msg) |
From: <no...@so...> - 2002-07-26 18:10:59
|
Bugs item #560963, was opened at 2002-05-27 09:38 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452212&aid=560963&group_id=48175 Category: None Group: None >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: commit command changes status incorrect Initial Comment: The commit command changes the status of the local listing even if the user aborts the operation (for example by not specifying a commit message and choosing *abort in the next dialog) ---------------------------------------------------------------------- >Comment By: Stefan Heimann (stefanheimann) Date: 2002-07-26 20:10 Message: Logged In: YES user_id=327401 fixed in 0.3 ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452212&aid=560963&group_id=48175 |
From: <no...@so...> - 2002-07-26 16:40:21
|
Bugs item #584831, was opened at 2002-07-22 12:27 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452212&aid=584831&group_id=48175 Category: None Group: None >Status: Closed >Resolution: Fixed Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: update commit does not propagate options Initial Comment: for exmple: update -j simple-formdata . is not executed with the -j option ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452212&aid=584831&group_id=48175 |
From: Stefan H. <ste...@us...> - 2002-07-26 16:35:40
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv13101/src Modified Files: basic_cmds.py cvs_cmds.py utils.py Log Message: implemented scan-command Index: basic_cmds.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/basic_cmds.py,v retrieving revision 1.19 retrieving revision 1.20 diff -C2 -d -r1.19 -r1.20 *** basic_cmds.py 27 May 2002 07:32:29 -0000 1.19 --- basic_cmds.py 26 Jul 2002 16:35:37 -0000 1.20 *************** *** 21,24 **** --- 21,25 ---- import os, string, re + from cvs_shell import Listing, Entry ###################################### *************** *** 104,105 **** --- 105,127 ---- in the local listing.""" app.autoRefresh = app.toggle(app.autoRefresh, args) + + def scan(app, name, args): + """Scans the local filesystem starting at the given directory and creates a listing. + The server is not contacted, so the status of all files will be `unknown'.""" + def visit(entries, dirname, names): + if dirname.find('CVS') >= 0: return + for name in names: + if name.find('CVS') < 0: + entries.append(Entry(dirname, name, Entry.S_UNKNOWN)) + dir = '.' + entries = [] + if args != '': dir = args + try: + os.path.walk(dir, visit, entries) + except OSError, msg: + app.printErr(msg) + app.setListing(Listing(app, dir, entries)) + app.setDirtyListing(0) + app.getListing().sortEntries() + app.printListing() + Index: cvs_cmds.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/cvs_cmds.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** cvs_cmds.py 26 Jul 2002 15:44:25 -0000 1.10 --- cvs_cmds.py 26 Jul 2002 16:35:37 -0000 1.11 *************** *** 46,49 **** --- 46,52 ---- app.printErr(msg) return + rootDir = utils.getAbsDir(rest) + if rootDir is None: + return try: lines = app.runCvsCmd('status', globOpts=globOpts, args=opts+' '+rest, getStderr=1) *************** *** 71,75 **** dir = dirRes.group('dir') if dir == '.': dir = '' ! app.setListing(Listing(app, os.getcwd(), entries)) app.setDirtyListing(0) app.getListing().sortEntries() --- 74,78 ---- dir = dirRes.group('dir') if dir == '.': dir = '' ! app.setListing(Listing(app, rootDir, entries)) app.setDirtyListing(0) app.getListing().sortEntries() *************** *** 93,96 **** --- 96,102 ---- return if simulate: globOpts += '-n' + rootDir = utils.getAbsDir(rest) + if rootDir is None: + return try: lines = app.runCvsCmd('update', globOpts=globOpts, args=opts+' '+rest) *************** *** 104,108 **** dir = os.path.dirname(x[1]) entries.append(Entry(dir, name, status)) ! app.setListing(Listing(app, os.getcwd(), entries)) app.setDirtyListing(0) app.getListing().sortEntries() --- 110,114 ---- dir = os.path.dirname(x[1]) entries.append(Entry(dir, name, status)) ! app.setListing(Listing(app, rootDir, entries)) app.setDirtyListing(0) app.getListing().sortEntries() Index: utils.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/utils.py,v retrieving revision 1.10 retrieving revision 1.11 diff -C2 -d -r1.10 -r1.11 *** utils.py 27 May 2002 07:32:29 -0000 1.10 --- utils.py 26 Jul 2002 16:35:37 -0000 1.11 *************** *** 23,28 **** from app import AppError - ParseError = 'ParseError' ########################### --- 23,46 ---- from app import AppError + def getAbsDir(str): + """Returns the absolute directory str denotes. If str does not denote a directory, None is returned. + """ + import os + try: + if str == '': return os.getcwd() + str = os.path.expandvars(str) + str = os.path.expanduser(str) + if not os.path.exists(str): + return None + if not os.path.isabs(str): + str = os.path.join(os.getcwd(), str) + return os.path.dirname(str) + except OSError, msg: + print msg + return None + + + ParseError = 'ParseError' ########################### |
From: Stefan H. <ste...@us...> - 2002-07-26 16:35:40
|
Update of /cvsroot/cvsshell/cvsshell/etc In directory usw-pr-cvs1:/tmp/cvs-serv13101/etc Modified Files: cvsshell.ini Log Message: implemented scan-command Index: cvsshell.ini =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/etc/cvsshell.ini,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** cvsshell.ini 27 May 2002 07:38:52 -0000 1.9 --- cvsshell.ini 26 Jul 2002 16:35:37 -0000 1.10 *************** *** 19,22 **** --- 19,23 ---- full-info = basic_cmds.toggleFullInfoLine auto-refresh = basic_cmds.setAutoRefresh + scan = basic_cmds.scan end |
From: Stefan H. <ste...@us...> - 2002-07-26 15:44:28
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv26587/src Modified Files: cvs_cmds.py interactive_app.py Log Message: * fixed bug with status/update command (dirnames were not passed to the command) * KeyboardInterrupt exception is catched at a higher level in interactive_app (no more unwanted termination) Index: cvs_cmds.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/cvs_cmds.py,v retrieving revision 1.9 retrieving revision 1.10 diff -C2 -d -r1.9 -r1.10 *** cvs_cmds.py 26 Jul 2002 15:32:57 -0000 1.9 --- cvs_cmds.py 26 Jul 2002 15:44:25 -0000 1.10 *************** *** 47,51 **** return try: ! lines = app.runCvsCmd('status', globOpts=globOpts, args=opts, getStderr=1) except CvsError: return entries = [] --- 47,51 ---- return try: ! lines = app.runCvsCmd('status', globOpts=globOpts, args=opts+' '+rest, getStderr=1) except CvsError: return entries = [] *************** *** 94,98 **** if simulate: globOpts += '-n' try: ! lines = app.runCvsCmd('update', globOpts=globOpts, args=opts) except CvsError: return entries = [] --- 94,98 ---- if simulate: globOpts += '-n' try: ! lines = app.runCvsCmd('update', globOpts=globOpts, args=opts+' '+rest) except CvsError: return entries = [] Index: interactive_app.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/interactive_app.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** interactive_app.py 3 Jun 2002 07:40:48 -0000 1.8 --- interactive_app.py 26 Jul 2002 15:44:25 -0000 1.9 *************** *** 52,59 **** def run(self): while 1: ! command = self.readCommand() ! if command == None: ! break ! result = self.evalCommand(command) if result is self.BREAK_REPL: break elif result is None: continue --- 52,66 ---- def run(self): while 1: ! try: ! command = self.readCommand() ! if command == None: ! break ! result = self.evalCommand(command) ! except EOFError: ! self.printMsg() ! return None ! except KeyboardInterrupt: ! self.printMsg() ! return None if result is self.BREAK_REPL: break elif result is None: continue *************** *** 83,94 **** else: msg += '[%s] ' % default ! try: ! a = raw_input(msg) ! except EOFError: ! self.printMsg() ! return None ! except KeyboardInterrupt: ! self.printMsg() ! return None a = os.path.expandvars(a) a = os.path.expanduser(a) --- 90,94 ---- else: msg += '[%s] ' % default ! a = raw_input(msg) a = os.path.expandvars(a) a = os.path.expanduser(a) |
From: Stefan H. <ste...@us...> - 2002-07-26 15:33:01
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv22241/src Modified Files: cvs_cmds.py Log Message: fixed bug in update command (bug id: 584831) Index: cvs_cmds.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/cvs_cmds.py,v retrieving revision 1.8 retrieving revision 1.9 diff -C2 -d -r1.8 -r1.9 *** cvs_cmds.py 27 May 2002 07:32:29 -0000 1.8 --- cvs_cmds.py 26 Jul 2002 15:32:57 -0000 1.9 *************** *** 77,81 **** ! def update(app, args, name, simulate=0): """Bring work tree in sync with repository. This command donwloads new files and changes to already --- 77,81 ---- ! def update(app, name, args, simulate=0): """Bring work tree in sync with repository. This command donwloads new files and changes to already |
From: <no...@so...> - 2002-07-26 10:18:00
|
Feature Requests item #586917, was opened at 2002-07-26 03:17 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452215&aid=586917&group_id=48175 Category: None Group: None Status: Open Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: Replace file with previous revision Initial Comment: It should be possible to replace a file with a previous revision. There should be a option to commit the changes immediately after replacing In cvs you would write cvs update -p -r x.x SomeFile > SomeFile ; cvs commit -m "replaced with revision x.x" SomeFile With cvsshell one could write replace SomeFile x.x ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452215&aid=586917&group_id=48175 |
From: <no...@so...> - 2002-07-22 10:27:04
|
Bugs item #584831, was opened at 2002-07-22 03:27 You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452212&aid=584831&group_id=48175 Category: None Group: None Status: Open Resolution: None Priority: 5 Submitted By: Nobody/Anonymous (nobody) Assigned to: Nobody/Anonymous (nobody) Summary: update commit does not propagate options Initial Comment: for exmple: update -j simple-formdata . is not executed with the -j option ---------------------------------------------------------------------- You can respond by visiting: https://sourceforge.net/tracker/?func=detail&atid=452212&aid=584831&group_id=48175 |
From: Stefan H. <ste...@us...> - 2002-07-19 11:36:06
|
Update of /cvsroot/cvsshell/cvsshell In directory usw-pr-cvs1:/tmp/cvs-serv22719 Modified Files: ChangeLog Log Message: fixed bug that caused arguments separated by newlines to be ignored. Index: ChangeLog =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/ChangeLog,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** ChangeLog 3 Jun 2002 07:42:17 -0000 1.5 --- ChangeLog 19 Jul 2002 11:36:03 -0000 1.6 *************** *** 1,4 **** --- 1,11 ---- CvsShell Version History + * Version 0.2.2 + + + Bugfixes: + - fixed bug that caused arguments of a command which are delimited by newlines + to be ignored. + + * Version 0.2.1 |
From: Stefan H. <ste...@us...> - 2002-07-19 11:36:06
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv22719/src Modified Files: cvs_shell.py Log Message: fixed bug that caused arguments separated by newlines to be ignored. Index: cvs_shell.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/cvs_shell.py,v retrieving revision 1.26 retrieving revision 1.27 diff -C2 -d -r1.26 -r1.27 *** cvs_shell.py 3 Jun 2002 07:45:22 -0000 1.26 --- cvs_shell.py 19 Jul 2002 11:36:03 -0000 1.27 *************** *** 28,32 **** from plugable_app import PlugableApp ! VERSION = '0.2.1' NAME ='CvsShell' COPYRIGHT = 'Copyright 2002 Stefan Heimann (ma...@st...).\n' \ --- 28,32 ---- from plugable_app import PlugableApp ! VERSION = '0.2.2' NAME ='CvsShell' COPYRIGHT = 'Copyright 2002 Stefan Heimann (ma...@st...).\n' \ *************** *** 64,68 **** (?P<opts>.*) # the options of the command )? # options are optional ! """, re.VERBOSE) self.cvsChangeCmdRE = re.compile(r"""\s+ (ad(d)?|new|ci|com(mit)?|delete|remove) --- 64,68 ---- (?P<opts>.*) # the options of the command )? # options are optional ! """, re.VERBOSE | re.DOTALL) self.cvsChangeCmdRE = re.compile(r"""\s+ (ad(d)?|new|ci|com(mit)?|delete|remove) |
From: Stefan H. <ste...@us...> - 2002-06-03 07:45:26
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv23287/src Modified Files: cvs_shell.py Log Message: incremented version Index: cvs_shell.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/cvs_shell.py,v retrieving revision 1.25 retrieving revision 1.26 diff -C2 -d -r1.25 -r1.26 *** cvs_shell.py 3 Jun 2002 07:40:48 -0000 1.25 --- cvs_shell.py 3 Jun 2002 07:45:22 -0000 1.26 *************** *** 28,32 **** from plugable_app import PlugableApp ! VERSION = '0.2' NAME ='CvsShell' COPYRIGHT = 'Copyright 2002 Stefan Heimann (ma...@st...).\n' \ --- 28,32 ---- from plugable_app import PlugableApp ! VERSION = '0.2.1' NAME ='CvsShell' COPYRIGHT = 'Copyright 2002 Stefan Heimann (ma...@st...).\n' \ |
From: Stefan H. <ste...@us...> - 2002-06-03 07:42:20
|
Update of /cvsroot/cvsshell/cvsshell In directory usw-pr-cvs1:/tmp/cvs-serv22641 Modified Files: ChangeLog Log Message: added entries for release 0.2.1 Index: ChangeLog =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/ChangeLog,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** ChangeLog 27 May 2002 07:38:25 -0000 1.4 --- ChangeLog 3 Jun 2002 07:42:17 -0000 1.5 *************** *** 1,4 **** --- 1,15 ---- CvsShell Version History + * Version 0.2.1 + + + Bugfixes: + - fixed bug in InteractiveApp + + + Enhancements + - auto-refresh of the directory listing is now invoked when the listing + is dirty _and_ should be printed and not only when the listing is + out-of-date. + + * Version 0.2 |
From: Stefan H. <ste...@us...> - 2002-06-03 07:40:51
|
Update of /cvsroot/cvsshell/cvsshell/src In directory usw-pr-cvs1:/tmp/cvs-serv21726/src Modified Files: cvs_shell.py interactive_app.py Log Message: * fixed bug in InteractiveApp * auto-refresh of the directory listing is now invoked when the listing is dirty _and_ should be printed and not only when the listing is out-of-date. Index: cvs_shell.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/cvs_shell.py,v retrieving revision 1.24 retrieving revision 1.25 diff -C2 -d -r1.24 -r1.25 *** cvs_shell.py 27 May 2002 07:32:29 -0000 1.24 --- cvs_shell.py 3 Jun 2002 07:40:48 -0000 1.25 *************** *** 97,104 **** def getPrompt(self): - if self.autoRefresh and self.dirtyListing and self.cvsRoot: - self.printMsg('getting listing from ' + self.cvsRoot) - self.evalCommand('refresh') - self.dirtyListing = 0 status = '' if self.cvsRootAutoUpdate: status += 'a' --- 97,100 ---- *************** *** 322,325 **** --- 318,327 ---- if not self.listing: self.printErr(self.noListingErrMsg) + return + if self.autoRefresh and self.dirtyListing and self.cvsRoot: + self.printMsg('getting listing from ' + self.cvsRoot + + ". To disable this feature execute `auto-root off'.") + self.evalCommand('refresh') + self.dirtyListing = 0 else: self.listing.printEntries() Index: interactive_app.py =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/src/interactive_app.py,v retrieving revision 1.7 retrieving revision 1.8 diff -C2 -d -r1.7 -r1.8 *** interactive_app.py 28 Mar 2002 23:07:37 -0000 1.7 --- interactive_app.py 3 Jun 2002 07:40:48 -0000 1.8 *************** *** 1,104 **** ! ############################################################################### ! # This file is part of CvsShell ! # ! # CvsShell is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2 of the License, or ! # (at your option) any later version. ! # ! # CvsShell is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! # ! # You should have received a copy of the GNU General Public License ! # along with CvsShell; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! # ! # Copyright 2002 by Stefan Heimann ! # Website: http://cvsshell.sourceforge.net/ ! ############################################################################### ! ! import os, types ! from app import App, AppError ! ! class InteractiveApp(App): ! ! def __init__(self): ! App.__init__(self) ! self.BREAK_REPL = 'BREAK_REPL' ! self.DEF_PATTERN = '%%def%%' ! try: ! import readline ! except ImportError: ! self.printErr("Could not import readline.\nHistory browsing " \ ! "and tab completion will not be available.") ! return ! else: ! readline.parse_and_bind("tab: complete") ! ! def setHistoryFile(self,filename): ! self.historyFile = filename ! try: ! import readline ! except ImportError: return ! try: ! readline.read_history_file(self.historyFile) ! except IOError: ! pass ! import atexit ! atexit.register(readline.write_history_file, self.historyFile) ! ! def run(self): # define App.run here ! while 1: ! command = self.readCommand() ! if command == None: ! break ! result = self.evalCommand(command) ! if result is self.BREAK_REPL: break ! elif result is None: continue ! else: self.printMsg(result) ! ! def readCommand(self): # subclass hooks + App.start,stop ! p = self.getPrompt() ! if type(p) == types.TupleType: ! return self.prompt(p[0], p[1]) ! else: ! return self.prompt(p) ! ! def getPrompt(self): ! return '? ' ! ! def prompt(self, msg, default=None): ! """Displayes msg and prompts the user for input. ! If input is EOF, None is returned. ! If input is the emtpy string and default is given, default is returned. ! If a default value is given and msg contains self.DEF_PATTERN, ! this part of msg is replaced by the default value surrounded with []. ! Otherwise the default value is append at the end of msg.""" ! if default is not None: ! i = msg.find(self.DEF_PATTERN) ! if i >= 0: ! msg = msg[:i] + '[' + default + ']'+ msg[i+len(self.DEF_PATTERN):] ! else: ! msg += '[%s] ' % default ! try: ! a = raw_input(msg) ! except EOFError: ! self.printMsg() ! return None ! except KeyboardInterrupt: ! self.printMsg() ! return None ! a = os.path.expandvars(a) ! a = os.path.expanduser(a) ! a = a.strip() ! if a == '' and default is not None: return default ! else: return a ! ! def evalCommand(self, command): ! """Subclasses should override this method. ! If BREAK_REPL is returned, the repl is terminated, ! otherwise the return-value is printed (if not None).""" ! raise AppError, 'evalCommand must be redefined!' ! --- 1,104 ---- ! ############################################################################### ! # This file is part of CvsShell ! # ! # CvsShell is free software; you can redistribute it and/or modify ! # it under the terms of the GNU General Public License as published by ! # the Free Software Foundation; either version 2 of the License, or ! # (at your option) any later version. ! # ! # CvsShell is distributed in the hope that it will be useful, ! # but WITHOUT ANY WARRANTY; without even the implied warranty of ! # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the ! # GNU General Public License for more details. ! # ! # You should have received a copy of the GNU General Public License ! # along with CvsShell; if not, write to the Free Software ! # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA ! # ! # Copyright 2002 by Stefan Heimann ! # Website: http://cvsshell.sourceforge.net/ ! ############################################################################### ! ! import os, types ! from app import App, AppError ! ! class InteractiveApp(App): ! ! def __init__(self): ! App.__init__(self) ! self.BREAK_REPL = 'BREAK_REPL' ! self.DEF_PATTERN = '%%def%%' ! try: ! import readline ! except ImportError: ! self.printErr("Could not import readline.\nHistory browsing " \ ! "and tab completion will not be available.") ! return ! else: ! readline.parse_and_bind("tab: complete") ! ! def setHistoryFile(self,filename): ! self.historyFile = filename ! try: ! import readline ! except ImportError: return ! try: ! readline.read_history_file(self.historyFile) ! except IOError: ! pass ! import atexit ! atexit.register(readline.write_history_file, self.historyFile) ! ! def run(self): ! while 1: ! command = self.readCommand() ! if command == None: ! break ! result = self.evalCommand(command) ! if result is self.BREAK_REPL: break ! elif result is None: continue ! else: self.printMsg(result) ! ! def readCommand(self): ! p = self.getPrompt() ! if type(p) == types.TupleType: ! return self.prompt(p[0], p[1]) ! else: ! return self.prompt(p) ! ! def getPrompt(self): ! return '? ' ! ! def prompt(self, msg, default=None): ! """Displayes msg and prompts the user for input. ! If input is EOF, None is returned. ! If input is the emtpy string and default is given, default is returned. ! If a default value is given and msg contains self.DEF_PATTERN, ! this part of msg is replaced by the default value surrounded with []. ! Otherwise the default value is append at the end of msg.""" ! if default is not None: ! i = msg.find(self.DEF_PATTERN) ! if i >= 0: ! msg = msg[:i] + '[' + default + ']'+ msg[i+len(self.DEF_PATTERN):] ! else: ! msg += '[%s] ' % default ! try: ! a = raw_input(msg) ! except EOFError: ! self.printMsg() ! return None ! except KeyboardInterrupt: ! self.printMsg() ! return None ! a = os.path.expandvars(a) ! a = os.path.expanduser(a) ! a = a.strip() ! if a == '' and default is not None: return default ! else: return a ! ! def evalCommand(self, command): ! """Subclasses should override this method. ! If BREAK_REPL is returned, the repl is terminated, ! otherwise the return-value is printed (if not None).""" ! raise AppError, 'evalCommand must be redefined!' ! |
From: Stefan H. <ste...@us...> - 2002-05-27 08:32:00
|
Update of /cvsroot/cvsshell/cvsshell In directory usw-pr-cvs1:/tmp/cvs-serv10099 Modified Files: README index.html Added Files: ReleaseNotes Log Message: added feature list --- NEW FILE: ReleaseNotes --- CvsShell 0.2 released! http://cvsshell.sourceforge.net CvsShell is a console-based cvs client. It provides convenient access to the cvs commands through a shell-like user interface. Features: * CvsShell prompts you for all arguments needed for executing a command. * Aliases for different cvsroots. * Listing of all modified files in the current directory tree. * Operations on files in the listing can be executed quickly, because those files can be accessed using a numerical ID instead of a (typically long) pathname. * Output of external shell commands can be embedded in cvsshell commands. * IDs of files in the listing can be used in external shell commands. * Shortcuts for cvs commands: - Commit is automatically executed after an add or delete command (if you want to). - Renaming files with cvs is lenghty: you have the rename the file in the local filesystem, remove the old file, add the new file and commit your changes. With CvsShell, this is done with a single command. * New commands can be integrated easily into CvsShell. CvsShell is written on python and runs on every platform for which cvs and python is available. CvsShell is available from http://cvsshell.sourceforge.net Index: README =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/README,v retrieving revision 1.5 retrieving revision 1.6 diff -C2 -d -r1.5 -r1.6 *** README 27 May 2002 07:54:34 -0000 1.5 --- README 27 May 2002 08:31:57 -0000 1.6 *************** *** 22,25 **** --- 22,45 ---- + Features + -------- + + * CvsShell prompts you for all arguments needed for executing a command. + * Aliases for different cvsroots. + * Listing of all modified files in the current directory tree. + * Operations on files in the listing can be executed quickly, because + those files can be accessed using a numerical ID instead of a + (typically long) pathname. + * Output of external shell commands can be embedded in cvsshell commands. + * IDs of files in the listing can be used in external shell commands. + * Shortcuts for cvs commands: + - Commit is automatically executed after an add or delete command (if you + want to). + - Renaming files with cvs is lenghty: you have the rename the file in the + local filesystem, remove the old file, add the new file and commit your + changes. With CvsShell, this is done with a single command. + * New commands can be integrated easily into CvsShell. + + Installation ------------ *************** *** 112,115 **** --- 132,154 ---- the filename. You can also specify several IDs. Type `help list' to get more information on how to do this. + + You can also use arbitrary external shell commands. To force a command to be executed + as a external command, you have to prepend a `!' to its name. + + Example: $ !rename + + You can use the ouput of a external shell command in the argument + string of a CvsShell command: + + $ commit `find . -name '*.java'` + + Commits all files ending with *.java + + It is also possible to use IDs of the listing in external shell commands. CvsShell + replaces these IDs with the corresponding filenames. + + Example: $ rm [[ 1,2,5-8 ]] + + Removes the files with IDs 1,2,5,6,7,8. To finish your session with CvsShell, just type `exit' or hit Ctrl-D. Index: index.html =================================================================== RCS file: /cvsroot/cvsshell/cvsshell/index.html,v retrieving revision 1.4 retrieving revision 1.5 diff -C2 -d -r1.4 -r1.5 *** index.html 27 May 2002 07:54:34 -0000 1.4 --- index.html 27 May 2002 08:31:57 -0000 1.5 *************** *** 10,16 **** <p> CvsShell is a console-based cvs-client written in <a href="http://www.python.org">Python</a>. ! The current version is 0.2 (2002-05-27). </p> <ul> <li><a href="README">Readme</a></li> --- 10,40 ---- <p> CvsShell is a console-based cvs-client written in <a href="http://www.python.org">Python</a>. ! The current version is 0.2 (2002-05-27). Read the <a href="ChangeLog">change log</a> and the ! <a href="ReleaseNotes">release notes</a>. </p> + <h3>Features:</h3> + <ul> + <li>CvsShell prompts you for all arguments needed for executing a command.</li> + <li>Aliases for different cvsroots.</li> + <li>Listing of all modified files in the current directory tree.</li> + <li>Operations on files in the listing can be executed quickly, because + those files can be accessed using a numerical ID instead of a + (typically long) pathname.</li> + <li>Output of external shell commands can be embedded in cvsshell commands.</li> + <li>IDs of files in the listing can be used in external shell commands.</li> + <li>Shortcuts for cvs commands: + <ul> + <li>Commit is automatically executed after an add or delete command (if you + want to).</li> + <li>Renaming files with cvs is lenghty: you have the rename the file in the + local filesystem, remove the old file, add the new file and commit your + changes. With CvsShell, this is done with a single command.</li> + </ul> + </li> + <li>New commands can be integrated easily into CvsShell.</li> + </ul> + + <h3>Resources:</h3> <ul> <li><a href="README">Readme</a></li> *************** *** 27,31 **** <p>You can view a screenshot <a href="images/screenshot.jpg">here</a>.</p> ! <p>Release history:</p> <ul> <li>0.2: 2002-05-27</li> --- 51,55 ---- <p>You can view a screenshot <a href="images/screenshot.jpg">here</a>.</p> ! <h3>Release history:</h3> <ul> <li>0.2: 2002-05-27</li> |