From mboxrd@z Thu Jan 1 00:00:00 1970 From: Florian Achleitner Subject: [PATCH v6 14/16] Add a svnrdump-simulator replaying a dump file for testing Date: Wed, 22 Aug 2012 21:15:59 +0200 Message-ID: <1345662961-9587-15-git-send-email-florian.achleitner.2.6.31@gmail.com> References: <1345662961-9587-1-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-2-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-3-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-4-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-5-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-6-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-7-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-8-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-9-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-10-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-11-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-12-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-13-git-send-email-florian.achleitner.2.6.31@gmail.com> <1345662961-9587-14-git-send-email-florian.achleitner.2.6.31@gmail.com> Cc: Junio C Hamano , David Michael Barr , Jonathan Nieder , Florian Achleitner To: git@vger.kernel.org X-From: git-owner@vger.kernel.org Wed Aug 22 21:17:35 2012 Return-path: Envelope-to: gcvg-git-2@plane.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by plane.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1T4GQm-0002J7-TH for gcvg-git-2@plane.gmane.org; Wed, 22 Aug 2012 21:17:33 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S965078Ab2HVTRY (ORCPT ); Wed, 22 Aug 2012 15:17:24 -0400 Received: from mail-bk0-f46.google.com ([209.85.214.46]:46107 "EHLO mail-bk0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S964997Ab2HVTQ5 (ORCPT ); Wed, 22 Aug 2012 15:16:57 -0400 Received: by bkwj10 with SMTP id j10so449819bkw.19 for ; Wed, 22 Aug 2012 12:16:56 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=from:to:cc:subject:date:message-id:x-mailer:in-reply-to:references; bh=Hb8Cgb6Z77mXKHLZKzitn6/eB8VQNUegPAANACIB+gc=; b=eyVOJV2McprCO4vtwVLCI4tis0RXjyTN0pQcGRgdx431DMqoi0arCd6hJdEKGIwC0V RF1g29taOjZyITHGQNNgRTMEaMq3Ud1tboVFRLIfzLkPUz9kh/k/EGaFjVutYtY6XFB/ KIPoTwgmC9tglK4pttuQfmLYVS67pwVWnH0hCNg5hb3q/8yQgF1yFaAHeXwfRV3LdYml rPgMz2HyYDGyIXjANIU9ylkPuoZmr6m6ELUt83FRFTkeyksgFckdl1yW1reZK/0fK4ru d0quvAJK/mLeFI/95whZOHerbRfFx2dlJVm+VfPoWfgWbIWTAPLv6EVJCRTlaUWn1gU4 HAFw== Received: by 10.204.154.214 with SMTP id p22mr7124380bkw.111.1345663016498; Wed, 22 Aug 2012 12:16:56 -0700 (PDT) Received: from localhost.localdomain (cm56-227-93.liwest.at. [86.56.227.93]) by mx.google.com with ESMTPS id ht18sm3346763bkc.16.2012.08.22.12.16.54 (version=SSLv3 cipher=OTHER); Wed, 22 Aug 2012 12:16:55 -0700 (PDT) X-Mailer: git-send-email 1.7.9.5 In-Reply-To: <1345662961-9587-14-git-send-email-florian.achleitner.2.6.31@gmail.com> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: To ease testing without depending on a reachable svn server, this compact python script mimics parts of svnrdumps behaviour. It requires the remote url to start with sim://. Start and end revisions are evaluated. If the requested revision doesn't exist, as it is the case with incremental imports, if no new commit was added, it returns 1 (like svnrdump). To allow using the same dump file for simulating multiple incremental imports, the highest revision can be limited by setting the environment variable SVNRMAX to that value. This simulates the situation where higher revs don't exist yet. Signed-off-by: Florian Achleitner Signed-off-by: Junio C Hamano --- contrib/svn-fe/svnrdump_sim.py | 53 ++++++++++++++++++++++++++++++++++++++++ 1 file changed, 53 insertions(+) create mode 100755 contrib/svn-fe/svnrdump_sim.py diff --git a/contrib/svn-fe/svnrdump_sim.py b/contrib/svn-fe/svnrdump_sim.py new file mode 100755 index 0000000..1cfac4a --- /dev/null +++ b/contrib/svn-fe/svnrdump_sim.py @@ -0,0 +1,53 @@ +#!/usr/bin/python +""" +Simulates svnrdump by replaying an existing dump from a file, taking care +of the specified revision range. +To simulate incremental imports the environment variable SVNRMAX can be set +to the highest revision that should be available. +""" +import sys, os + + +def getrevlimit(): + var = 'SVNRMAX' + if os.environ.has_key(var): + return os.environ[var] + return None + +def writedump(url, lower, upper): + if url.startswith('sim://'): + filename = url[6:] + if filename[-1] == '/': filename = filename[:-1] #remove terminating slash + else: + raise ValueError('sim:// url required') + f = open(filename, 'r'); + state = 'header' + wroterev = False + while(True): + l = f.readline() + if l == '': break + if state == 'header' and l.startswith('Revision-number: '): + state = 'prefix' + if state == 'prefix' and l == 'Revision-number: %s\n' % lower: + state = 'selection' + if not upper == 'HEAD' and state == 'selection' and l == 'Revision-number: %s\n' % upper: + break; + + if state == 'header' or state == 'selection': + if state == 'selection': wroterev = True + sys.stdout.write(l) + return wroterev + +if __name__ == "__main__": + if not (len(sys.argv) in (3, 4, 5)): + print "usage: %s dump URL -rLOWER:UPPER" + sys.exit(1) + if not sys.argv[1] == 'dump': raise NotImplementedError('only "dump" is suppported.') + url = sys.argv[2] + r = ('0', 'HEAD') + if len(sys.argv) == 4 and sys.argv[3][0:2] == '-r': + r = sys.argv[3][2:].lstrip().split(':') + if not getrevlimit() is None: r[1] = getrevlimit() + if writedump(url, r[0], r[1]): ret = 0 + else: ret = 1 + sys.exit(ret) -- 1.7.9.5