为什么 git svn init xxxxx 创建一个名为 Floor 的新目录并在那里初始化以及如何修复

why does git svn init xxxxx creates a new directory called Floor and initializes there and how to fix

我们正在从 CloudForge SVN 托管迁移到 Azure 开发运营 GIT,我正在迁移我的所有存储库。我移动了其中的 3 个,然后我进入了一个 .net C# SFP 项目,它以不同的方式做事,我不知道为什么。

我正在执行的步骤:

  1. 在 devops 中创建 SFP 项目
  2. 在 D:\projects 上创建新目录
  3. 将作者文件放入目录 - 在 notepad++ 中打开并更改为 UDF8 格式
  4. 打开GITCMD
  5. git svn init ##CloudForgeRepoAddressHERe## --no-metadata
  6. git 配置 svn.authorsfile authors.txt
  7. git svn fetch
  8. git svn rebase - 错误但 运行 无论如何
  9. git push --set-upstream https://Horizo​​nsQES@dev.azure.com/HorizonsQES/CSLS/_git/CSLS master

通常在第 5 步中,该过程会初始化我所在目录中的空目录,但它会创建一个 Floor 目录。

目前我正在尝试继续,但我不确定它是否能正常工作。

有人知道它为什么要创建楼层目录吗?当我进行提取时,它出错了。

我可能不得不在没有任何评论的情况下手动将这个项目添加到 devops 中,这对这个项目来说并不是世界末日。

请阅读接下来的几行:

W: Do not be alarmed at the above message git-svn is just searching aggressively for old history.
...
Checked through r9709

最后一行说 git svn fetch 成功了。


至于Floor目录……很简单。你自己指定的。

参见 man git-init — it accepts optional [directory] argument in the last position, which allows you to init other directory than the CWD。这是在行动:

[~]$ mkdir -vp /tmp/ttt
mkdir: created directory '/tmp/ttt'
[~]$ cd /tmp/ttt
[/tmp/ttt]$
[/tmp/ttt]$ ls -la #-- no output; /tmp/ttt is empty as expected from just-created new directory
[/tmp/ttt]$ 
[/tmp/ttt]$ git init foobar
Initialized empty Git repository in /tmp/ttt/foobar/.git/
[/tmp/ttt]$ #--                              ^^^^^^
[/tmp/ttt]$ #--                              ||||||
[/tmp/ttt]$ #-- NOTICE ----------------------//////
[/tmp/ttt]$ 
[/tmp/ttt]$ ls -a . foobar
.:
drwxr-xr-x - ulidtko 28 Sep 11:37 foobar

foobar:
drwxr-xr-x - ulidtko 28 Sep 11:37 .git

[/tmp/ttt]$ #-- I.e. in `.` (= CWD = /tmp/ttt) there's only `foobar` which is a git repo
[/tmp/ttt]$ #-- Which shows that we `git init`ed a directory other than CWD

git svn init当然会将呼叫转给git init,所以这就是你拥有它的原因。

如果我猜对了你的审查,你说:

git svn init https://..../asdf/qwer/Shop Floor Processing --no-metadata

你应该知道,根据 Unix Shell 规则,bash 会将此命令解析为 git svn init ARG1 ARG2 ARG3 ARG4ARG1=https://..../asdf/qwer/ShopARG2=FloorARG3=Processing, ARG4=--no-metadata. IE。参数由空格分隔。要将包含空格 作为单个参数 的任何内容(目录路径,URL...任何内容)传递,您需要像这样 quote it

git svn init "https://..../asdf/qwer/Shop Floor Processing" --no-metadata