簡體   English   中英

如何刪除 git-svn 中的空目錄?

[英]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.

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