How can I force mercurial to accept an empty commit

后端 未结 5 1148
说谎
说谎 2020-12-20 17:40

I\'m trying to convert an SVN repo with hgsvn and I have some commits where SVN properties where modified, but since Mercurial doesn\'t use those, it sees this

相关标签:
5条回答
  • 2020-12-20 18:10

    I think you can't do empty commit in mercurial. Here's a thread explaining why.

    0 讨论(0)
  • 2020-12-20 18:10

    Perhaps, the following will not help you in the situation, but perheps other reader.

    You can make an "empty" commit via import of a nearly empty patch. I exported a patch, removed all changes in it, leaveing only 3 lines (diff..., ---... and +++ ...), and imported it with hg import --bypass --message ...

    0 讨论(0)
  • 2020-12-20 18:20

    As per @vorrtex's comment on the original question, the simplest method to force an empty commit in Mercurial is as follows:

    1. Add a new file (say, Dummy.txt) and commit.
    2. hg forget Dummy.txt
    3. hg commit --amend

    This will remove Dummy.txt from the previous commit, leaving it empty. (You can use e.g. TortoiseHg for step 1 but you'll need to use a command line tool for steps 2 and 3.)

    I'm adding this as a new answer because when scanning this thread originally I missed the comment, and the existing answers don't create a truly empty commit.

    0 讨论(0)
  • 2020-12-20 18:23

    You can skip this commit if you add a local svn.$REVNUM tag to the head revision (=the revision which also has the svn.($REVNUM-1) tag now). Then you can continue with hgpullsvn.

    Say your import is at this state (last imported rev is 15800, the property-only rev is 15801):

    $ hg log -l1
    changeset:   1234:123456789abc
    branch:      trunk
    tag:         tip
    tag:         svn.15800
    parent:      1233:cba987654321
    user:        Rudi <rudi@example.com>
    date:        Tue Aug 24 11:42:23 2010 +0200
    summary:     Foobar
    
    $ svn info
    Path: .
    URL: svn+ssh://example.com/foobar/trunk
    Repository Root: svn+ssh://example.com/foobar
    Repository UUID: 26c7c274-8ed1-4e7f-bdc1-5c767a948b10
    Revision: 15801
    Node Kind: directory
    Schedule: normal
    Last Changed Author: rudi
    Last Changed Rev: 15801
    Last Changed Date: 2010-08-24 14:00:29 +0200 (Di, 24 Aug 2010)
    

    Then you simply add the svn.15801 tag:

    $ hg tag -l -r 123456789abc svn.15801
    

    and contunie to import.

    But make a backup before you try this.

    0 讨论(0)
  • 2020-12-20 18:33

    When I've needed empty commits in p4 and hg before, I've simply used a file that was set aside to 'be' the empty commit. Just dump a random string of some sort (I usually use the time and date) into the throwaway file, and hg commit away....

    0 讨论(0)
提交回复
热议问题