6
正如您可能已經知道,默認情況下,git不會爲新的裸存儲庫啓用reflog更新。問題是,我有一個很長的歷史記錄庫,但它是在我設置標誌「logAllRefUpdates」之前創建的,現在我想讓這個信息用於其他應用程序的工作。如何在現有的裸存儲庫中創建reflog信息
如何通過對現有存儲庫進行最小更改來實現這一目標。一個非常簡單的解決方案是推新的提交,我不想(!):-)
正如您可能已經知道,默認情況下,git不會爲新的裸存儲庫啓用reflog更新。問題是,我有一個很長的歷史記錄庫,但它是在我設置標誌「logAllRefUpdates」之前創建的,現在我想讓這個信息用於其他應用程序的工作。如何在現有的裸存儲庫中創建reflog信息
如何通過對現有存儲庫進行最小更改來實現這一目標。一個非常簡單的解決方案是推新的提交,我不想(!):-)
reflog是一個相對簡單的文件格式。這裏有一個例子:
] cat .git/logs/HEAD|sed 's/\t/<TAB>/'
0000000000000000000000000000000000000000 5cfe4256d98af22a570c78c5e3048391a90f5f98 Joe User <[email protected]> 1306427954 -0400<TAB>clone: from git://git.kernel.org/pub/scm/git/git.git
您可以手動按照相同的格式建立適當reflogs:
previous-ref-or-zero new-ref User Name <[email protected]> unix-timestamp timezone\tmessage
只需創建其中之一爲每個參考。您可以直接使用git for-each-ref
與適當的格式字符串(謝謝,克里斯!)
不幸的是,我剛剛嘗試過,這是行不通的。您可以嘗試先將core.logallrefupdates設置爲默認(禁用),然後創建裸回購,並再次啓用logallrefupdate,並且... – instcode 2011-05-26 17:12:25
用新方法更新 – bdonlan 2011-05-26 17:32:08
迭代refs的程序應該使用'git for-each-ref '而不是「處理寬鬆和緊湊的裁判」。 – 2011-05-27 03:13:59