• D
    git-svn: do a partial rebuild if rev_map is out-of-date · 2beec897
    Deskin Miller 提交于
    Suppose you're using git-svn to work with a certain SVN repository.
    Since you don't like 'git-svn fetch' to take forever, and you don't want
    to accidentally interrupt it and end up corrupting your repository, you
    set up a remote Git repository to mirror the SVN repository, which does
    its own 'git-svn fetch' on a cronjob; now you can 'git-fetch' from the
    Git mirror into your local repository, and still dcommit to SVN when you
    have changes to push.
    
    After you do this, though, git-svn will get very confused if you ever
    try to do 'git-svn fetch' in your local repository again, since its
    rev_map will differ from the branch's head, and it will be unable to
    fetch new commits from SVN because of the metadata conflict.  But all
    the necessary metadata are there in the Git commit message; git-svn
    already knows how to rebuild rev_map files that get blown away, by
    using the metadata.
    
    This patch teaches git-svn do a partial rebuild of the rev_map to
    match the true state of the branch, if it ever is used to fetch again.
    
    This will only work for projects not using either noMetadata or
    useSvmProps configuration options; if you are using these options,
    git-svn will fall back to the previous behaviour.
    Signed-off-by: NDeskin Miller <deskinm@umich.edu>
    Acked-by: NEric Wong <normalperson@yhbt.net>
    Signed-off-by: NJunio C Hamano <gitster@pobox.com>
    2beec897
git-svn.perl 142.7 KB