00203 :
00204 ap = argparse.ArgumentParser( description=__doc__, formatter_class=argparse.RawDescriptionHelpFormatter)
00205 ap.add_argument("-l","--loglevel", help="logging level INFO, DEBUG, WARN,... Default %(default)s ")
00206 ap.add_argument( "--logformat", help="Used by logger. Default %(default)s ")
00207 ap.add_argument( "--logpath", help="Path to write log file to. Default %(default)s ")
00208 ap.add_argument("-b","--baseurl", help="base url of SVN repository. Default %(default)s ")
00209 ap.add_argument("-w","--workingcopy",help="working copy of SVN repository to svn up etc.. Default %(default)s ")
00210 ap.add_argument("-a","--author", help="select revisions to be from this author. Default %(default)s ")
00211 ap.add_argument( "--limit", help="limit the maximum number of revisions to avoid slow queries. Default %(default)s ")
00212 ap.add_argument( "--dbconf", help="DB to compare against or load into. Default %(default)s ")
00213 ap.add_argument( "--sleep", help="Seconds to sleep between revisions, eliminating the remote possibility of subsecond fastforwarding time clashes. Default %(default)s ")
00214
00215 ap.add_argument( "action", help="Action to perform eg ls, rcmpcat, rloadcat ")
00216 ap.add_argument( "revs", help="String representation of revision or contiguous revision ranges, eg 4913:4932 or 4913")
00217
00218 ap.add_argument("-r","--reset", action="store_true", help="reset SVN working copy to precisely the revision by deletion of directory prior to update ")
00219 ap.add_argument("-c","--cachesvnlog", action="store_true", help="cache the SVN log as an xml file for speed, when you know the log for a revision or revision range is unchanging ")
00220
00221
00222
00223
00224 ap.set_defaults(
00225 loglevel="info",
00226 baseurl="http://dayabay.ihep.ac.cn/svn/dybaux" ,
00227 workingcopy="~/dybaux/catalog/tmp_offline_db",
00228 dbconf="tmp_offline_db",
00229 author=None,
00230 sleep=3,
00231 limit=50,
00232 reset=False,
00233 cachesvnlog=False,
00234 logformat='%(asctime)s %(name)s %(levelname)-8s %(message)s',
00235 logpath=None,
00236 )
00237
00238 args = ap.parse_args()
00239 urlleaf = os.path.basename(args.baseurl)
00240 assert urlleaf == 'dybaux', "leaf of baseurl is now restricted to be dybaux for simplicity"
00241
00242 loglevel = getattr( logging , args.loglevel.upper() )
00243 log.setLevel(loglevel)
00244
00245 sh = logging.StreamHandler()
00246 sh.setLevel(loglevel)
00247 fmtr = logging.Formatter(args.logformat)
00248 sh.setFormatter(fmtr)
00249 log.addHandler(sh)
00250
00251 if args.logpath:
00252 fh = logging.FileHandler(args.logpath,mode="w")
00253 fh.setFormatter(fmtr)
00254 fh.setLevel(loglevel)
00255 log.addHandler(fh)
00256
00257 return args