threads / patch / 4364

patchRe: [PATCH] git-svnimport: Improved detection of merges.

Subject: Re: [PATCH] git-svnimport: Improved detection of merges.

## tl;dr

4 messages between Jun 1, 2006 and Jun 1, 2006. Diffs are folded; open one to read it.

replies: 3people: 3as markdown or json

Junio C Hamano· Jun 1, 2006, 07:12 UTC · lore
Florian Forster <octo@verplant.org> writes:
> The regexes detecting merges (while still relying on the commit messages,
> though) have been improved to catch saner (and hopefully more) messages. The
> old regex was so generic that it often matched something else and missed the
> actual merge-message.
> Also, the regex given with the `-M' commandline-option is checked first:
> Explicitely given regexes should be considered better than the builtin ones,
> and should therefore be given a chance to match a message first.

The latter part sounds immensely sane. The former I am not a good judge, since I do not interact with subversion repositories myself. Opinions from real svn users?

BTW, did anybody received the latest "What's in git.git" I sent out about 20 minutes ago?

Eric Wong· Jun 1, 2006, 09:22 UTC · re: Junio C Hamano · lore
Junio C Hamano <junkio@cox.net> wrote:
Show 14 quoted lines
> Florian Forster <octo@verplant.org> writes:
> 
> > The regexes detecting merges (while still relying on the commit messages,
> > though) have been improved to catch saner (and hopefully more) messages. The
> > old regex was so generic that it often matched something else and missed the
> > actual merge-message.
> 
> > Also, the regex given with the `-M' commandline-option is checked first:
> > Explicitely given regexes should be considered better than the builtin ones,
> > and should therefore be given a chance to match a message first.
> 
> The latter part sounds immensely sane.  The former I am not a
> good judge, since I do not interact with subversion repositories
> myself.  Opinions from real svn users?
Sounds sane to me, but I've not seen the patch from Florian.

I've been toying around a bit with enhanced branch/merge-tracking support in git-svn, too.

> 
> BTW, did anybody received the latest "What's in git.git" I sent
> out about 20 minutes ago?

Nope, I haven't seen that nor Florian's patch (assuming it was sent to the ml). Ah, I just saw (part #2) pop up.

-- 
Eric Wong
Florian Forster· Jun 1, 2006, 09:36 UTC · re: Eric Wong · lore
Hi,
On Thu, Jun 01, 2006 at 02:22:39AM -0700, Eric Wong wrote:
> Nope, I haven't seen that nor Florian's patch (assuming it was sent to
> the ml).  Ah, I just saw (part #2) pop up.

sorry, I'm new to the git development and didn't know that patches should be sent to the ML. I've attached that patch I sent to Junio to this mail.

Florian Forster <octo@verplant.org> writes:
> The regexes detecting merges (while still relying on the commit
> messages, though) have been improved to catch saner (and hopefully
> more) messages. The old regex was so generic that it often matched
> something else and missed the actual merge-message.
The assumption here is that merges are between branches or between a
branch and the trunk. The regexes therefore match things like
(parenthesis showing what is being used as the branch name if it
matches).
 - `branch/(name)'
 - `(trunk)'
 - `(name) branch'
Prior to the patch `git-svnimport' would match the message
  ``Merging from branch/foo to branch/bar''
and return `from' as the branch name.

Regards, Florian Forster

-- 
Florian octo Forster
Hacker in training
GnuPG: 0x91523C3D
http://verplant.org/


From nobody Mon Sep 17 00:00:00 2001
From: Florian Forster <octo@verplant.org>
Date: Wed, 31 May 2006 12:28:41 +0200
Subject: [PATCH] git-svnimport: Improved detection of merges.

The regexes detecting merges (while still relying on the commit messages,
though) have been improved to catch saner (and hopefully more) messages. The
old regex was so generic that it often matched something else and missed the
actual merge-message.
Also, the regex given with the `-M' commandline-option is checked first:
Explicitely given regexes should be considered better than the builtin ones,
and should therefore be given a chance to match a message first.

---

 git-svnimport.perl |   11 +++++++++--
 1 files changed, 9 insertions(+), 2 deletions(-)

1075d5b0cd92dbb8dc77838b2da2d8190904b351
diff --git a/git-svnimport.perl b/git-svnimport.perl
index 61f559f..38ac732 100755
--- a/git-svnimport.perl
+++ b/git-svnimport.perl
@@ -63,10 +63,17 @@ my $svn_dir = $ARGV[1];
 
 our @mergerx = ();
 if ($opt_m) {
-	@mergerx = ( qr/\W(?:from|of|merge|merging|merged) (\w+)/i );
+	my $branch_esc = quotemeta ($branch_name);
+	my $trunk_esc  = quotemeta ($trunk_name);
+	@mergerx =
+	(
+		qr!\b(?:merg(?:ed?|ing))\b.*?\b((?:(?<=$branch_esc/)[\w\.\-]+)|(?:$trunk_esc))\b!i,
+		qr!\b(?:from|of)\W+((?:(?<=$branch_esc/)[\w\.\-]+)|(?:$trunk_esc))\b!i,
+		qr!\b(?:from|of)\W+(?:the )?([\w\.\-]+)[-\s]branch\b!i
+	);
 }
 if ($opt_M) {
-	push (@mergerx, qr/$opt_M/);
+	unshift (@mergerx, qr/$opt_M/);
 }
 
 # Absolutize filename now, since we will have chdir'ed by the time we
-- 
1.3.3
Junio C Hamano· Jun 1, 2006, 09:58 UTC · re: Florian Forster · lore
Florian Forster <octo@verplant.org> writes:
Show 7 quoted lines
> On Thu, Jun 01, 2006 at 02:22:39AM -0700, Eric Wong wrote:
>> Nope, I haven't seen that nor Florian's patch (assuming it was sent to
>> the ml).  Ah, I just saw (part #2) pop up.
>
> sorry, I'm new to the git development and didn't know that patches
> should be sent to the ML. I've attached that patch I sent to Junio to
> this mail.
Thanks for a resend.

The patch is already queued in "next", so svn people might want to take a peek there.

← back to recent threads