Search code examples
gitazuredirectorydevopsgit-svn

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


We are moving from CloudForge SVN hosting to Azure dev ops GIT and I am moving all my repositories. I moved 3 of them and then I get to a .net C# SFP project and its doing things differently and I don't know why.

Steps that I am following:

  1. Create SFP project in devops
  2. create new directory on D:\projects
  3. Put authors file into directory - open in notepad++ and change to UDF8 format
  4. Open GIT CMD
  5. git svn init ##CloudForgeRepoAddressHEre## --no-metadata
  6. git config svn.authorsfile authors.txt
  7. git svn fetch
  8. git svn rebase - errors but run it anyways
  9. git push --set-upstream https://[email protected]/HorizonsQES/CSLS/_git/CSLS master

Normally in step 5 the process would initalize the empty directory in the directory I am sitting in but instead it's creating a Floor directory instead.

At this moment I'm attempting to continue onwards but I'm not sure if it's going to work properly.

Does anyone know why it's creating the floor directory? When I do the fetch it is erroring out.

I may have to manually add this project into devops without any comments and such which for this one is not the end of the world.

directoryimage


Solution

  • Just read the next few lines:

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

    The last line says that git svn fetch was successful.


    As for the Floor directory... That's pretty simple. You specified it yourself.

    edited screenshot

    See man git-init — it accepts optional [directory] argument in the last position, which allows you to init other directory than the CWD. Here it is in action:

    [~]$ 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 of course forwards the call to git init, so that's why you have it.

    If I'm guessing through your censorships correctly, you said:

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

    You should know that per Unix Shell rules, bash will parse this command as git svn init ARG1 ARG2 ARG3 ARG4 with ARG1=https://..../asdf/qwer/Shop, ARG2=Floor, ARG3=Processing, ARG4=--no-metadata. I.e. arguments are separated by whitespace. To pass anything (directory path, URL... anything) which contains whitespace as a single argument, you need to quote it like this:

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