[英]How can I remove empty directories in git-svn?
我有一個特定的問題,我在這里或其他任何地方都找不到解決方案。 我有一個 Subversion 存儲庫,我正在使用 git-svn 訪問它並對其進行處理。
前段時間,Subversion 倉庫中有一些空目錄(空的,只有子文件夾)。 Git 不會跟蹤這些。 然后它們從 Subversion 存儲庫中刪除。 但即使在運行此命令后我仍然擁有它們:
git svn rebase
當我手動刪除它們時,它們會在下一個命令中重新創建:
git svn rebase
我怎樣才能擺脫它們?
我使用純 Subversion 檢查過,它們不在存儲庫中。
我想您會在這篇博文中找到答案。
[...]
如果沒有留下任何文件,則從 SVN 樹中刪除目錄。 SVN 可以對空目錄進行版本控制,如果其中沒有文件,默認情況下不會刪除它們。 git 不能對空目錄進行版本控制。 啟用此標志將使對 SVN 的提交像 git 一樣。
config key: svn.rmdir
要解決問題的根源,請全局設置 git 配置:
git config --global svn.rmdir true
[...]
告訴git svn
它不應該嘗試重新創建空目錄:
git config svn-remote.svn automkdirs false
這是手冊頁的相關部分:
svn-remote.<name>.automkdirs
通常,“git svn clone”和“git svn rebase”命令會嘗試重新創建 Subversion 存儲庫中的空目錄。 如果此選項設置為“false”,則只有在顯式運行“git svn mkdirs”命令時才會創建空目錄。 如果未設置,git svn 假定此選項為“true”。
請注意,很容易將此主題與提交/不向 SVN 提交空目錄的主題混淆(這就是svn.rmdir
的用途)。
通過https://spin.atomicobject.com/2014/08/17/git-svn-empty-directories/回答:
修改您的~/.gitconfig
以將其添加為默認行為。
[svn]
# push empty directory removals back to svn as directory deletes
rmdir = true
這將使刪除目錄成為默認設置。
這有點粗糙,但我發現以下解決了我的問題:
rm .git/svn/refs/remotes/trunk/unhandled.log
git clean -df
任何后續
git svn rebase
不會重新創建任何東西。
由於我不知道如何在不重新克隆 repo 的情況下重新生成此文件,因此我建議先對其進行備份。 這是一個文本文件,所以我想您還可以編輯其內容以刪除最終創建的條目
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.