Perché "Git Clone" confeziona il database degli oggetti quando viene superato un file locale: /// URL?

StackOverflow https://stackoverflow.com/questions/8897556

Domanda

Di seguito descrivono i comandi bash da eseguire per riprodurre il comportamento osservato. Sebbene quelli siano stati eseguiti msysgit, Ho il sospetto che il risultato dovrebbe essere simile su un ambiente *Nix.

Imposta il repository di origine

$ mkdir main && cd main
$ git init .
Initialized empty Git repository in d:/temp/main/.git/
$ echo a > a.txt
$ git add . && git commit -m "Initial commit"
[master (root-commit) e1ec355] Initial commit
 1 files changed, 1 insertions(+), 0 deletions(-)
 create mode 100644 a.txt

Clona il repository di origine utilizzando un file locale: /// url

$ cd ..
$ mkdir clonefromfileurl && cd clonefromfileurl
$ git clone file:///d:/temp/main
Cloning into 'main'...
remote: Counting objects: 3, done.
Receiving objects: 100% (3/3), done.
remote: Total 3 (delta 0), reused 0 (delta 0)

Clona il repository di origine utilizzando un percorso del file locale

$ cd ..
$ mkdir clonefrompath && cd clonefrompath
$ git clone /d:/temp/main
Cloning into 'main'...
done.

Secondo Wikipedia, Un URL di file con una tripla barra implica una risorsa locale.

Tuttavia, quando si clona attraverso un locale file:/// URL, il database degli oggetti è imballato prima di essere trasmesso (copiato?). Questo non è il caso in cui la posizione del repository di origine è espressa come percorso locale.

Perché git si comporta in diversi modi considerando che sia la fonte che il repository target sono ospitati localhost?

Nessuna soluzione corretta

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top