• S
    fast-import: Support reusing 'from' and brown paper bag fix reset. · ea5e370a
    Shawn O. Pearce 提交于
    It was suggested on the mailing list that being able to use `from`
    in any commit to reset the current branch is useful in some types of
    importers, such as a darcs importer.
    
    We originally did not permit resetting an existing branch with a
    new `from` command during a `commit` command, but this restriction
    was only to help debug the hacked up cvs2svn that Jon Smirl was
    developing in parallel with git-fast-import.  It is probably more
    of a problem to disallow it than to allow it.  So now we permit a
    `from` during any `commit`.
    
    While making the changes required to permit multiple `from`
    commands on the same branch, I discovered we no longer needed the
    last_commit field to be set to 0 during a reset, so that was removed.
    (Reset was originally setting the field to 0 to signal cmd_from()
    that it was OK to execute on the branch.)
    
    While poking around in this section of fast-import I also realized
    the `reset` command was not working as intended if the corresponding
    `from` command was omitted (as allowed by the BNF grammar and the
    code).  If `from` was omitted we cleared out the tree but we left
    the tree SHA-1 and parent commit SHA-1 intact.  This is not what
    the user intended in this case.  Instead they would be trying to
    reset the branch to have no parent and to have no tree, making the
    branch look new-born during the next commit.  We now clear these
    SHA-1 values during `reset`, ensuring the branch looks new-born if
    `from` does not get supplied.
    
    New test cases for these were also added.
    Signed-off-by: NShawn O. Pearce <spearce@spearce.org>
    ea5e370a
fast-import.c 50.1 KB