Return-Path: X-Original-To: apmail-subversion-dev-archive@minotaur.apache.org Delivered-To: apmail-subversion-dev-archive@minotaur.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 9C96117A32 for ; Fri, 13 Mar 2015 18:16:04 +0000 (UTC) Received: (qmail 78023 invoked by uid 500); 13 Mar 2015 18:16:04 -0000 Delivered-To: apmail-subversion-dev-archive@subversion.apache.org Received: (qmail 77972 invoked by uid 500); 13 Mar 2015 18:16:04 -0000 Mailing-List: contact dev-help@subversion.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Delivered-To: mailing list dev@subversion.apache.org Delivered-To: moderator for dev@subversion.apache.org Received: (qmail 46734 invoked by uid 99); 13 Mar 2015 17:14:04 -0000 X-ASF-Spam-Status: No, hits=-0.7 required=5.0 tests=RCVD_IN_DNSWL_LOW,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (nike.apache.org: domain of julianfoad@gmail.com designates 74.125.82.172 as permitted sender) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20120113; h=mime-version:from:date:message-id:subject:to:content-type; bh=BIpv2MdOIIDI8V14eL73UxVldjSSaTi4wtShlXeqGbE=; b=zOv3Ysu/ic3Zl0VUhEHvKLVcpiiyaGcWwKpN9XF3bau8e/cpElktVNwlSWLegUVjDO QgWz8LeR0JRKVVL/vcjApxviL9oj2g13STNxKAse7fdS4PCgKYUVinDoHDC4AAJSNKGk KA5dKIUlqQSGfEEm6ZLO6XpiNznh7uJ/VtxJWUdyC1j3nQCyZdfgj/nsYDGVgdcr+DRN TpSuKyUT4AFqMfk/UAaWnAXDQYnd8b0Gghc3MgqWLKoQHv7MYgQch8pj81ljD+ezsBDC iT6hXS8b9y9zdx0AalMhebC/I7zDutvOEXQK2hhpfrwlOOFW40wqMvyiFql0n06j3+/K Hcsw== X-Received: by 10.194.62.198 with SMTP id a6mr100495777wjs.90.1426266818618; Fri, 13 Mar 2015 10:13:38 -0700 (PDT) MIME-Version: 1.0 From: Julian Foad Date: Fri, 13 Mar 2015 17:13:18 +0000 Message-ID: Subject: Playing with svnmover To: dev Content-Type: text/plain; charset=UTF-8 X-Virus-Checked: Checked by ClamAV on apache.org Dear fans of move tracking, I heartily invite you to help by playing with 'svnmover'. Can you have a go and see what it can do? It's quite fun to play with (in a nerdy way :-) To get it, build the 'move-tracking-2' branch and look in 'subversion/svnmover/svnmover' -- it's a sibling to 'svn' and 'svnmucc'. It's fairly easy to pick up as you go along. There's a transcript below, as an example. You can also see in the IRC history [1] where I guided Brane through playing with it for the first time. You can try - doing renames/moves (using 'mv PATH1 PATH2') - merging those changes onto another branch ('merge FROM TO YCA') - visualize what's happening ('branches PATH', 'ls PATH', 'ls-br-r') - type 'help' to see usage message You should find that it copes perfectly with renames inside renames, and so on. Do please share any thoughts or questions you have -- * about the model * do you grok the way moves work in svnmover? * any new feature 'svnmover' should have to help with experimenting? I believe we can build a move-tracking design for Subversion. This stage is not trying to give the final answer, it is squarely aimed at exploring and understanding how it could and should work. So I need *your* input, please, if you can spare some thought cycles and experimentation cycles. Here's an example transcript. [[[ $ svnadmin create repo; REPO=file://$PWD/repo $ svnmover -U $REPO svnmover> ls . e0 . svnmover> mkbranch trunk mkdir branches A trunk (branch ^.2) A branches Committed r1: --- diff branch ^, family 0, at / : / A e2 e0/trunk (branch ^.2) A e3 e0/branches --- added branch ^.2, family 1, at /trunk svnmover> mkdir trunk/A mkdir trunk/A/D1 mkdir trunk/A/D2 A trunk/A A trunk/A/D1 A trunk/A/D2 Committed r2: --- diff branch ^.2, family 1, at /trunk : /trunk A e101 e100/A A e102 e101/D1 A e103 e101/D2 svnmover> branch trunk branches/br1 A+ branches/br1 (branch ^.4) Committed r3: --- diff branch ^, family 0, at / : / A e4 e3/br1 (branch ^.4) --- added branch ^.4, family 1, at /branches/br1 svnmover> branches . branches in family 0: ^ / svnmover> branches trunk branches in family 1: ^.2 /trunk ^.4 /branches/br1 svnmover> mv branches/br1/A/D1 branches/br1/D1renamed V branches/br1/D1renamed (from branches/br1/A/D1) Committed r4: --- diff branch ^.4, family 1, at /branches/br1 : /branches/br1 Mvr e102 e100/D1renamed from e101/D1 svnmover> mkdir trunk/A/D1/new-child A trunk/A/D1/new-child Committed r5: --- diff branch ^.2, family 1, at /trunk : /trunk A e104 e102/new-child svnmover> merge trunk branches/br1 trunk@2 A e104 new-child Committed r6: --- diff branch ^.4, family 1, at /branches/br1 : /branches/br1 A e104 e102/new-child svnmover> ls branches/br1 e100 . e101 A e102 D1renamed e103 A/D2 e104 D1renamed/new-child svnmover> merge branches/br1 trunk trunk@2 M/V e102 D1renamed M/V e104 new-child Committed r7: --- diff branch ^.2, family 1, at /trunk : /trunk Mvr e102 e100/D1renamed from e101/D1 svnmover> ls trunk e100 . e101 A e102 D1renamed e103 A/D2 e104 D1renamed/new-child svnmover> ]]] - Julian [1]