lucene-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From "David Smiley (JIRA)" <>
Subject [jira] [Commented] (LUCENE-6933) Create a (cleaned up) SVN history in git
Date Fri, 18 Dec 2015 21:12:46 GMT


David Smiley commented on LUCENE-6933:

Thanks for all the hard work you put into this Dawid!

I was trying to test out how far the history goes back on the Solr side, using
as an example.  I tried this:
{{git log --follow solr/core/src/java/org/apache/solr/handler/component/}}
but it only goes back to 2012-04.  But when I use other tools I'm familiar with, Atlassian
SourceTree, I found early commit messages with "SearchComponent" in them revealing commit
4a490cff561e9ab492ec27fdc55c51c0db02ffed in 2007-12.  Any ideas why git --log didn't work
in this case?

> Create a (cleaned up) SVN history in git
> ----------------------------------------
>                 Key: LUCENE-6933
>                 URL:
>             Project: Lucene - Core
>          Issue Type: Task
>            Reporter: Dawid Weiss
>            Assignee: Dawid Weiss
>         Attachments: migration.txt, multibranch-commits.log,
> Goals:
> * selectively drop projects and core-irrelevant stuff:
>   ** {{lucene/site}}
>   ** {{lucene/nutch}}
>   ** {{lucene/lucy}}
>   ** {{lucene/tika}}
>   ** {{lucene/hadoop}}
>   ** {{lucene/mahout}}
>   ** {{lucene/pylucene}}
>   ** {{lucene/}}
>   ** {{lucene/old_versioned_docs}}
>   ** {{lucene/openrelevance}}
>   ** {{lucene/board-reports}}
>   ** {{lucene/java/site}}
>   ** {{lucene/java/nightly}}
>   ** {{lucene/dev/nightly}}
>   ** {{lucene/dev/lucene2878}}
>   ** {{lucene/sandbox/luke}}
>   ** {{lucene/solr/nightly}}
> * preserve the history of all changes to core sources (Solr and Lucene).
>   ** {{lucene/java}}
>   ** {{lucene/solr}}
>   ** {{lucene/dev/trunk}}
>   ** {{lucene/dev/branches/branch_3x}}
>   ** {{lucene/dev/branches/branch_4x}}
>   ** {{lucene/dev/branches/branch_5x}}
> * provide a way to link git commits and history with svn revisions (amend the log message).
> * annotate release tags
> * deal with large binary blobs (JARs): keep empty files instead for their historical
reference only.
> Non goals:
> * no need to preserve "exact" merge history from SVN (see "impossible" below).
> * Ability to build ancient versions is not an issue.
> Impossible:
> * It is not possible to preserve SVN "merge history" because of the following reasons:
>   ** Each commit in SVN operates on individual files. So one commit can "copy" (and record
a merge) files from anywhere in the object tree, even modifying them along the way. There
simply is no equivalent for this in git. 
>   ** There are historical commits in SVN that apply changes to multiple branches in one
commit ({{r1569975}}) and merges *from* multiple branches in one commit ({{r940806}}).
> * Because exact merge tracking is impossible then what follows is that exact "linearized"
history of a given file is also impossible to record. Let's say changes X, Y and Z have been
applied to a branch of a file A and then merged back. In git, this would be reflected as a
single commit flattening X, Y and Z (on the target branch) and three independent commits on
the branch. The "copy-from" link from one branch to another cannot be represented because,
as mentioned, merges are done on entire branches in git, not on individual files. Yes, there
are commits in SVN history that have selective file merges (not entire branches).

This message was sent by Atlassian JIRA

To unsubscribe, e-mail:
For additional commands, e-mail:

View raw message