2010-08-24 82 views
8

我想轉換一個SVN回購hgsvn,我有一些提交SVN屬性在哪裏修改,但由於Mercurial不使用這些,它認爲這是一個空提交併中止。有沒有辦法強制這個hg commit接受一個不會改變任何東西的提交?我如何強制mercurial接受一個空的提交

我不太熟悉hgsvn的內部破解它跳過空提交。

+2

有一個破解:創建1個文件,提交,然後刪除該文件並使用修改。 – vorrtex 2013-07-31 11:27:26

回答

3

如果您將本地svn。$ REVNUM標籤添加到頭版本(=現在也有svn。($ REVNUM-1)標籤的版本),則可以跳過此提交。然後你可以繼續使用hgpullsvn。

說你的導入是在這種狀態下(去年進口轉是15800,唯一的財產-REV爲15801):

$ hg log -l1 
changeset: 1234:123456789abc 
branch:  trunk 
tag:   tip 
tag:   svn.15800 
parent:  1233:cba987654321 
user:  Rudi <[email protected]> 
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) 

然後你只需添加svn.15801標籤:

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

和contunie導入。

但在嘗試此操作之前進行備份。

+0

謝謝,這讓我超越了這個承諾。 – 2010-08-25 06:36:49

1

當我在p4和hg之前需要空的提交時,我只是使用了一個被放在'be'空的提交文件。只是轉儲一些隨機字符串(我通常使用的時間和日期)到一次性文件,並hg commit了....

0

也許,下面的內容不會幫助你在這種情況下,但是會使其他讀者失望。

您可以通過導入幾乎空白的補丁來進行「空」提交。我導出了一個補丁,刪除了其中的所有更改,只剩下3行(diff ...,... ...和+++ ...),並將其導入到hg import --bypass --message ...

0

根據@ vorrtex的評論對於原始問題,在Mercurial中強制空提交的最簡單方法如下:

  1. 添加一個新文件(例如Dummy.txt)並提交。
  2. hg forget Dummy.txt
  3. hg commit --amend

這將從先前刪除Dummy.txt承諾,留下空。 (您可以使用例如TortoiseHg進行第1步,但需要使用命令行工具執行第2步和第3步。)

我將此添加爲新答案,因爲最初掃描此線程時我錯過了評論,現有的答案不會創建一個真正的空提交。

相關問題