簡體   English   中英

將歷史記錄從SVN導入到Git-更改提交者信息

[英]Importing History from SVN to Git - Change Committer Information

我正在使用git-svn工具將一些Subversion存儲庫轉換為Git。 我注意到,即使它正確導入了作者信息,提交者信息也與作者信息不匹配(例如,提交者日期是我運行git-svn工具的日期/時間)。

有沒有辦法使提交者信息與從Subversion導入時的作者信息匹配? 如果沒有,我如何使用git-filter-branch重寫提交以更正此問題(即,將每次提交的作者信息復制到提交者信息中)?

謝謝!

--- UPDATE ---

Git-svn不會導致此問題,我是! 我一直在根據Subversion的歷史記錄,這正在改變提交者的日期。 那么,是否有人可以使用git-filter-branch來更改此設置(即,將每次提交的作者信息復制到提交者信息中)?

您正在尋找filter-branch的--env-filter模式。 相關的環境變量是GIT_AUTHOR_NAMEGIT_AUTHOR_EMAILGIT_AUTHOR_DATEGIT_COMMITTER_NAMEGIT_COMMITTER_EMAILGIT_COMMITTER_DATE

您的命令將類似於:

git filter-branch --env-filter '
export GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"
export GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"
export GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"' -- --all

--all指定此操作應在所有分支上運行。 您的原始裁判將保留在refs /原始命名空間中,以防您搞砸。

當然,在沒有警告可能會發生任何危險的情況下,我無法發布此類信息。 來自man git-filter-branch:

警告! 重寫的歷史記錄將為所有對象使用不同的對象名稱,並且不會與原始分支收斂。 您將無法輕松地將重寫的分支推入並分發到原始分支的頂部。 如果您不了解全部含義,請不要使用此命令;如果簡單的一次提交就可以解決您的問題,請不要使用此命令。 (有關重寫已發布歷史的更多信息,請參見git-rebase(1)中的“從UPSTREAM REBASE恢復”部分。)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM