From mboxrd@z Thu Jan 1 00:00:00 1970 From: esr@thyrsus.com (Eric Raymond) Subject: Three issues from a Subversion-to-git migration Date: Fri, 26 Mar 2010 08:09:06 -0400 (EDT) Message-ID: <20100326120906.F03BB20CD21@snark.thyrsus.com> To: git@vger.kernel.org X-From: git-owner@vger.kernel.org Fri Mar 26 13:17:42 2010 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1Nv8TV-0003IL-By for gcvg-git-2@lo.gmane.org; Fri, 26 Mar 2010 13:17:17 +0100 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752673Ab0CZMRK (ORCPT ); Fri, 26 Mar 2010 08:17:10 -0400 Received: from static-71-162-243-5.phlapa.fios.verizon.net ([71.162.243.5]:49670 "EHLO snark.thyrsus.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752266Ab0CZMRJ (ORCPT ); Fri, 26 Mar 2010 08:17:09 -0400 X-Greylist: delayed 481 seconds by postgrey-1.27 at vger.kernel.org; Fri, 26 Mar 2010 08:17:09 EDT Received: by snark.thyrsus.com (Postfix, from userid 23) id F03BB20CD21; Fri, 26 Mar 2010 08:09:06 -0400 (EDT) Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: I joined the git list a few hours ago because of experiences I had while migrating one of my projects, GPSD, from Subversion to git. GPSD haa a logical but unusual use case for distributed version control; the best places to test GPS sensors are out-of-doors in cars and other places where wire-line Internet is absent and one may well be out of range of a WAP. In the course of the migration, I encountered three issues which I think could be addressed with a relatively small amount of work. 1. The git hook scripts for CIA.vc are broken (in a way that is, fortunately, easy to fix) and generally seem to be in an unmaintained, dusty state. 2. The git-svn migration logic does not handle unmodified SVN tag trees well. 3. I'm prone to typos, so I quickly noticed that the existing facilities for editing comments in commits (before they're pushed) are clumsy and dangerous. I will address these points in detail in separate mails. Issues 1 and 3 I can fix with working code. -- Eric S. Raymond From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Rast Subject: Re: Three issues from a Subversion-to-git migration Date: Mon, 29 Mar 2010 11:00:12 +0200 Message-ID: <201003291100.13043.trast@student.ethz.ch> References: <20100326120906.F03BB20CD21@snark.thyrsus.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: To: Eric Raymond X-From: git-owner@vger.kernel.org Mon Mar 29 11:01:00 2010 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1NwAq9-00078d-I7 for gcvg-git-2@lo.gmane.org; Mon, 29 Mar 2010 11:00:57 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754877Ab0C2JAk (ORCPT ); Mon, 29 Mar 2010 05:00:40 -0400 Received: from gwse.ethz.ch ([129.132.178.238]:45015 "EHLO gwse.ethz.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1753845Ab0C2JAk (ORCPT ); Mon, 29 Mar 2010 05:00:40 -0400 Received: from CAS01.d.ethz.ch (129.132.178.235) by gws01.d.ethz.ch (129.132.178.238) with Microsoft SMTP Server (TLS) id 8.2.234.1; Mon, 29 Mar 2010 11:00:38 +0200 Received: from thomas.localnet (129.132.153.233) by mail.ethz.ch (129.132.178.227) with Microsoft SMTP Server (TLS) id 8.2.234.1; Mon, 29 Mar 2010 11:00:13 +0200 User-Agent: KMail/1.13.1 (Linux/2.6.31.12-0.2-desktop; KDE/4.4.1; x86_64; ; ) In-Reply-To: <20100326120906.F03BB20CD21@snark.thyrsus.com> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: Eric Raymond wrote: > 2. The git-svn migration logic does not handle unmodified SVN tag > trees well. The problem here is that git-svn is designed to handle incremental updates, where it can't know whether some insane SVN user decides to modify the tag later on. I've used the following hack to make real tags out of SVN "tags": git for-each-ref --format="%(refname)" refs/remotes/tags/ | while read tag; do GIT_COMMITTER_DATE="$(git log -1 --pretty=format:"%ad" "$tag")" \ GIT_COMMITTER_EMAIL="$(git log -1 --pretty=format:"%ce" "$tag")" \ GIT_COMMITTER_NAME="$(git log -1 --pretty=format:"%cn" "$tag")" \ git tag -m "$(git log -1 --pretty=format:"%s%n%b" "$tag")" \ "${tag#refs/remotes/tags/}" "$tag" done Disclaimer: it worked last time I used it. Haven't checked if it got dusty since. -- Thomas Rast trast@{inf,student}.ethz.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Raymond Subject: Re: Three issues from a Subversion-to-git migration Date: Mon, 29 Mar 2010 05:10:56 -0400 Organization: Eric Conspiracy Secret Labs Message-ID: <20100329091056.GC10538@thyrsus.com> References: <20100326120906.F03BB20CD21@snark.thyrsus.com> <201003291100.13043.trast@student.ethz.ch> Reply-To: esr@thyrsus.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: git@vger.kernel.org To: Thomas Rast X-From: git-owner@vger.kernel.org Mon Mar 29 11:11:05 2010 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1NwAzw-00060G-2r for gcvg-git-2@lo.gmane.org; Mon, 29 Mar 2010 11:11:04 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754959Ab0C2JK6 (ORCPT ); Mon, 29 Mar 2010 05:10:58 -0400 Received: from static-71-162-243-5.phlapa.fios.verizon.net ([71.162.243.5]:42811 "EHLO snark.thyrsus.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1752397Ab0C2JK5 (ORCPT ); Mon, 29 Mar 2010 05:10:57 -0400 Received: by snark.thyrsus.com (Postfix, from userid 23) id F1C70475FEF; Mon, 29 Mar 2010 05:10:56 -0400 (EDT) Content-Disposition: inline In-Reply-To: <201003291100.13043.trast@student.ethz.ch> X-Eric-Conspiracy: There is no conspiracy User-Agent: Mutt/1.5.20 (2009-06-14) Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: Thomas Rast : > Eric Raymond wrote: > > 2. The git-svn migration logic does not handle unmodified SVN tag > > trees well. > > The problem here is that git-svn is designed to handle incremental > updates, where it can't know whether some insane SVN user decides to > modify the tag later on. Yes. Ideally, I suppose, git-svn (or whatever replaces it) would have behavior something like this: 1. Turn unmodified tag directories into git tags 2. Turn odified tags into branches. 3. Recognize when a formerly unmodified tag has been modified, remove the git tag, and turn it into a branch. > I've used the following hack to make real tags out of SVN "tags": > > git for-each-ref --format="%(refname)" refs/remotes/tags/ | > while read tag; do > GIT_COMMITTER_DATE="$(git log -1 --pretty=format:"%ad" "$tag")" \ > GIT_COMMITTER_EMAIL="$(git log -1 --pretty=format:"%ce" "$tag")" \ > GIT_COMMITTER_NAME="$(git log -1 --pretty=format:"%cn" "$tag")" \ > git tag -m "$(git log -1 --pretty=format:"%s%n%b" "$tag")" \ > "${tag#refs/remotes/tags/}" "$tag" > done > > Disclaimer: it worked last time I used it. Haven't checked if it got > dusty since. Wow, that's ugly. But it does look like it ought to work. -- Eric S. Raymond From mboxrd@z Thu Jan 1 00:00:00 1970 From: Thomas Rast Subject: Re: Three issues from a Subversion-to-git migration Date: Mon, 29 Mar 2010 11:32:53 +0200 Message-ID: <201003291132.53415.trast@student.ethz.ch> References: <20100326120906.F03BB20CD21@snark.thyrsus.com> <201003291100.13043.trast@student.ethz.ch> <20100329091056.GC10538@thyrsus.com> Mime-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit Cc: To: X-From: git-owner@vger.kernel.org Mon Mar 29 11:33:16 2010 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1NwBLP-0002AK-P9 for gcvg-git-2@lo.gmane.org; Mon, 29 Mar 2010 11:33:16 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1752397Ab0C2Jc5 (ORCPT ); Mon, 29 Mar 2010 05:32:57 -0400 Received: from gwse.ethz.ch ([129.132.178.237]:25870 "EHLO gwse.ethz.ch" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1751658Ab0C2Jc5 (ORCPT ); Mon, 29 Mar 2010 05:32:57 -0400 Received: from CAS01.d.ethz.ch (129.132.178.235) by gws00.d.ethz.ch (129.132.178.237) with Microsoft SMTP Server (TLS) id 8.2.234.1; Mon, 29 Mar 2010 11:32:55 +0200 Received: from thomas.localnet (129.132.153.233) by mail.ethz.ch (129.132.178.227) with Microsoft SMTP Server (TLS) id 8.2.234.1; Mon, 29 Mar 2010 11:32:53 +0200 User-Agent: KMail/1.13.1 (Linux/2.6.31.12-0.2-desktop; KDE/4.4.1; x86_64; ; ) In-Reply-To: <20100329091056.GC10538@thyrsus.com> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: Eric Raymond wrote: > > I've used the following hack to make real tags out of SVN "tags": > > > > git for-each-ref --format="%(refname)" refs/remotes/tags/ | > > while read tag; do > > GIT_COMMITTER_DATE="$(git log -1 --pretty=format:"%ad" "$tag")" \ > > GIT_COMMITTER_EMAIL="$(git log -1 --pretty=format:"%ce" "$tag")" \ > > GIT_COMMITTER_NAME="$(git log -1 --pretty=format:"%cn" "$tag")" \ > > git tag -m "$(git log -1 --pretty=format:"%s%n%b" "$tag")" \ > > "${tag#refs/remotes/tags/}" "$tag" > > done > > > > Disclaimer: it worked last time I used it. Haven't checked if it got > > dusty since. > > Wow, that's ugly. But it does look like it ought to work. BTW, you'll also want to use some treatment that removes the empty commit that is generated from the 'svn copy' SVN commit for tagging. One option is to use 'git filter-branch --prune-empty ...', which will also drop other no-op commits. If you want to remove only the ones that come from tagging, creative use of git-diff-tree in the above loop will work. I suppose I was never bothered by the lack of automatic tagging because I rarely found a git-svn import to be immediately fit for publishing. Usually it took some grafting and other filtering to bring the history into shape anyway. Maybe now that the svn:mergeinfo support obviates the need for grafting, it's worth thinking about the rest. -- Thomas Rast trast@{inf,student}.ethz.ch From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Raymond Subject: Re: Three issues from a Subversion-to-git migration Date: Mon, 29 Mar 2010 06:26:56 -0400 Organization: Eric Conspiracy Secret Labs Message-ID: <20100329102656.GA10925@thyrsus.com> References: <20100326120906.F03BB20CD21@snark.thyrsus.com> <201003291100.13043.trast@student.ethz.ch> <20100329091056.GC10538@thyrsus.com> <201003291132.53415.trast@student.ethz.ch> Reply-To: esr@thyrsus.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: git@vger.kernel.org To: Thomas Rast X-From: git-owner@vger.kernel.org Mon Mar 29 12:27:04 2010 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1NwCBT-0004R4-Vf for gcvg-git-2@lo.gmane.org; Mon, 29 Mar 2010 12:27:04 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1755208Ab0C2K06 (ORCPT ); Mon, 29 Mar 2010 06:26:58 -0400 Received: from static-71-162-243-5.phlapa.fios.verizon.net ([71.162.243.5]:50128 "EHLO snark.thyrsus.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1755177Ab0C2K05 (ORCPT ); Mon, 29 Mar 2010 06:26:57 -0400 Received: by snark.thyrsus.com (Postfix, from userid 23) id BCCCD475FEF; Mon, 29 Mar 2010 06:26:56 -0400 (EDT) Content-Disposition: inline In-Reply-To: <201003291132.53415.trast@student.ethz.ch> X-Eric-Conspiracy: There is no conspiracy User-Agent: Mutt/1.5.20 (2009-06-14) Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: Thomas Rast : > I suppose I was never bothered by the lack of automatic tagging > because I rarely found a git-svn import to be immediately fit for > publishing. Usually it took some grafting and other filtering to > bring the history into shape anyway. Maybe now that the svn:mergeinfo > support obviates the need for grafting, it's worth thinking about the > rest. Can't argue your first point at all, because my only large migration so far did in fact need filtering - to fix up artifacts from the Emacs VC front end that were fossilized in the Subversion history. And that was all my own fault; I was the original author of VC back in the early 1990s, and should have rewritten it to be changeset-aware years sooner than I did. Alas, I was kind of busy being Mr. Famous Geek for about a decade in there, and the VC rewrite was one of several projects that got seriously sidetracked. I finally got it done in 2008-2009, and git is one of the backend systems that benefits from that. Still. Even conceding that point, built-in support to further reduce the amount of hand-work required in SVN conversion would be no bad thing. Tag conversion was unequivocally the biggest pain in the ass when I migrated GPSD; I'm not claiming that will always be true, but I do think it's the largest pain that could be *reliably mechanized away*. That makes it a logical target. One of the reasons this is still on my mind after the GPSD migration is Battle For Wesnoth . I'm one of the senior devs on that project, and it is becoming clear to all that we have reached Subversion's limits there. I'm the project's tools and toolsmithing expert, and I've pretty much got the other devs convinced to switch to a DVCS when we can screw up our courage to move to a forge that supports one. This means I'm probably going to be the guy on the spot doing yet another big ugly conversion away from SVN sometime within the next year. The state of conversion tools at that time might end up determining whether Wesnoth goes with git or Mercurial. -- Eric S. Raymond From mboxrd@z Thu Jan 1 00:00:00 1970 From: Gabriel Filion Subject: Re: Three issues from a Subversion-to-git migration Date: Mon, 29 Mar 2010 11:57:32 -0400 Message-ID: <4BB0CDEC.8000708@gmail.com> References: <20100326120906.F03BB20CD21@snark.thyrsus.com> <201003291100.13043.trast@student.ethz.ch> <20100329091056.GC10538@thyrsus.com> Mime-Version: 1.0 Content-Type: text/plain; charset=ISO-8859-1 Content-Transfer-Encoding: 7bit Cc: Thomas Rast , git@vger.kernel.org To: esr@thyrsus.com X-From: git-owner@vger.kernel.org Mon Mar 29 17:57:53 2010 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1NwHLb-0006Ac-9b for gcvg-git-2@lo.gmane.org; Mon, 29 Mar 2010 17:57:51 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754332Ab0C2P5l (ORCPT ); Mon, 29 Mar 2010 11:57:41 -0400 Received: from mail-pw0-f46.google.com ([209.85.160.46]:47350 "EHLO mail-pw0-f46.google.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754324Ab0C2P5k (ORCPT ); Mon, 29 Mar 2010 11:57:40 -0400 Received: by pwi5 with SMTP id 5so6699423pwi.19 for ; Mon, 29 Mar 2010 08:57:40 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=gamma; h=domainkey-signature:received:received:message-id:date:from :user-agent:mime-version:to:cc:subject:references:in-reply-to :content-type:content-transfer-encoding; bh=TpFe5+uHWargDSXQzyp5QWZMHuMsHbWZVHjmlnrDO3A=; b=V8yUkkKHWOrvaZiFBggARIpP63IZtVk4FpWHEeudQ3dy+ktlIFow6cztnqLpJPLoWv y4SVdIOgQw77vW7gHBlXpJTP8YruV2t7yDfPFqH9Gf9QCA4cMWrPyhiXOVAjPoH9X6Gt 60BDyW6VpyN6IK+CbDnpfZAXFvRm/HNLSAqBc= DomainKey-Signature: a=rsa-sha1; c=nofws; d=gmail.com; s=gamma; h=message-id:date:from:user-agent:mime-version:to:cc:subject :references:in-reply-to:content-type:content-transfer-encoding; b=njkft6WlsR+vj0lBbQWdegNtYCbv2RfW1mndZlj5+ff2loF2tEBxpaJVEKsdbgjzAD 5PG/JnqS5bzHxNeUl/nUSr8x+dlIEswwt1+gPIo6RgvUvIsIdWCv93bcrs6/n/D0OHUB lBxseoW3eqDl2vTSyVXBjCaBjLH7RpnZPaQr4= Received: by 10.140.83.31 with SMTP id g31mr823301rvb.3.1269878259284; Mon, 29 Mar 2010 08:57:39 -0700 (PDT) Received: from [10.145.1.205] (smtpin.revolutionlinux.com [69.70.10.188]) by mx.google.com with ESMTPS id b17sm1373341rvf.8.2010.03.29.08.57.36 (version=TLSv1/SSLv3 cipher=RC4-MD5); Mon, 29 Mar 2010 08:57:38 -0700 (PDT) User-Agent: Mozilla/5.0 (X11; U; Linux i686; en-US; rv:1.9.1.5) Gecko/20100108 Lightning/1.0b1 Icedove/3.0 In-Reply-To: <20100329091056.GC10538@thyrsus.com> Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: Hello, On 2010-03-29 05:10, Eric Raymond wrote: > Thomas Rast : >> Eric Raymond wrote: >>> 2. The git-svn migration logic does not handle unmodified SVN tag >>> trees well. >> >> The problem here is that git-svn is designed to handle incremental >> updates, where it can't know whether some insane SVN user decides to >> modify the tag later on. > > Yes. Ideally, I suppose, git-svn (or whatever replaces it) would have > behavior something like this: > > 1. Turn unmodified tag directories into git tags > 2. Turn odified tags into branches. > 3. Recognize when a formerly unmodified tag has been modified, remove > the git tag, and turn it into a branch. > The 3rd point seems a bit weird to me.. users don't expect tags to disappear magically. Especially if it's done during a fetch while working. Here's how I would change the scenario: 1. For each creation of a sub-directory in SVN's tag directory, create a git tag on the revision that was referenced by the directory copy in SVN. 2. If (and only if) there are later modifications in the tag directory, create a branch starting from that tag. This way, the tag would be there but a branch would hold modifications based on code at this point, if there is any. The problem with my scenario, though is that it doesn't take care of tag creation + modification in the same commit (yuukkkk, but it's possible that it exists somewhere). If it could be possible to verify if modifications were made during the tag creation, then we could make the case hit both points. The other big "thing" is that it expects a certain correct separation into different directories (e.g. trunk/ tags/ branches/ ), which SVN doesn't enforce. -- Gabriel Filion From mboxrd@z Thu Jan 1 00:00:00 1970 From: Eric Raymond Subject: Re: Three issues from a Subversion-to-git migration Date: Mon, 29 Mar 2010 14:01:58 -0400 Organization: Eric Conspiracy Secret Labs Message-ID: <20100329180158.GB12922@thyrsus.com> References: <20100326120906.F03BB20CD21@snark.thyrsus.com> <201003291100.13043.trast@student.ethz.ch> <20100329091056.GC10538@thyrsus.com> <4BB0CDEC.8000708@gmail.com> Reply-To: esr@thyrsus.com Mime-Version: 1.0 Content-Type: text/plain; charset=us-ascii Cc: Thomas Rast , git@vger.kernel.org To: Gabriel Filion X-From: git-owner@vger.kernel.org Mon Mar 29 20:02:09 2010 Return-path: Envelope-to: gcvg-git-2@lo.gmane.org Received: from vger.kernel.org ([209.132.180.67]) by lo.gmane.org with esmtp (Exim 4.69) (envelope-from ) id 1NwJHr-00060Q-MF for gcvg-git-2@lo.gmane.org; Mon, 29 Mar 2010 20:02:08 +0200 Received: (majordomo@vger.kernel.org) by vger.kernel.org via listexpand id S1754205Ab0C2SB7 (ORCPT ); Mon, 29 Mar 2010 14:01:59 -0400 Received: from static-71-162-243-5.phlapa.fios.verizon.net ([71.162.243.5]:55906 "EHLO snark.thyrsus.com" rhost-flags-OK-OK-OK-OK) by vger.kernel.org with ESMTP id S1754030Ab0C2SB7 (ORCPT ); Mon, 29 Mar 2010 14:01:59 -0400 Received: by snark.thyrsus.com (Postfix, from userid 23) id 4B03D20CBA3; Mon, 29 Mar 2010 14:01:58 -0400 (EDT) Content-Disposition: inline In-Reply-To: <4BB0CDEC.8000708@gmail.com> X-Eric-Conspiracy: There is no conspiracy User-Agent: Mutt/1.5.20 (2009-06-14) Sender: git-owner@vger.kernel.org Precedence: bulk List-ID: X-Mailing-List: git@vger.kernel.org Archived-At: Gabriel Filion : > > 1. Turn unmodified tag directories into git tags > > 2. Turn odified tags into branches. > > 3. Recognize when a formerly unmodified tag has been modified, remove > > the git tag, and turn it into a branch. > > The 3rd point seems a bit weird to me.. users don't expect tags to > disappear magically. Especially if it's done during a fetch while working. A reasonable objection. > Here's how I would change the scenario: > > 1. For each creation of a sub-directory in SVN's tag directory, create a > git tag on the revision that was referenced by the directory copy in SVN. > 2. If (and only if) there are later modifications in the tag directory, > create a branch starting from that tag. > > This way, the tag would be there but a branch would hold modifications > based on code at this point, if there is any. That would work for me. > The problem with my scenario, though is that it doesn't take care of tag > creation + modification in the same commit (yuukkkk, but it's possible > that it exists somewhere). If it could be possible to verify if > modifications were made during the tag creation, then we could make the > case hit both points. Doesn't seem like that should be difficult. > The other big "thing" is that it expects a certain correct separation > into different directories (e.g. trunk/ tags/ branches/ ), which SVN > doesn't enforce. Are you suggesting that branch directory copies should be handled with the same rule? I think I could live with that. -- Eric S. Raymond