5 votes

format git fast-export et espaces

J'écris un exportation/importation rapide para Plastique SCM mais j'ai des problèmes avec les répertoires et les fichiers dont le nom contient des espaces.

Par exemple, un git fast-export de quelque chose comme :

git mv "new directory" "second directory"

est exporté en tant que :

D new directory/hello.c
M 100644 :1 second directory/hello.c

Au lieu d'un " move " (R) l'opération. Il en va de même pour les fichiers dont le nom contient des espaces.

Existe-t-il un moyen de le traiter correctement ?
Cela signifie-t-il que Git ne peut pas gérer les renommages sur les chemins avec des espaces ?

Un exemple concret est donné ci-dessous :

J'ai quelque chose de ce genre dans un projet :

  R src/samples/sampledata src/samples/samplebase
* R src/samples/samplebase/Test.Workflow.xml src/samples/samplebase/new/Test.Workflow.xml

et l'importation échoue en disant

fatal: Path src/samples/samplebase/Test.Workflow.xml not in branch

Donc, je comprends qu'il ne supporte pas le déplacement d'un répertoire et ensuite le déplacement d'un fichier à l'intérieur de ce répertoire... C'est un peu bizarre, non ?

2voto

VonC Points 414372

git fast-import mentionne dans l'article " Traitement des renommages section " :

Lors de l'importation d'un fichier ou d'un répertoire renommé, il suffit de supprimer le(s) ancien(s) nom(s) et de modifier le(s) nouveau(x) nom(s) lors de la validation correspondante. Git effectue la détection des renommages après coup, plutôt qu'explicitement lors d'un commit.

Votre exemple semble donc suivre cette logique.

N'oubliez pas que Git ne versionne pas les répertoires, mais seulement les blobs (c'est-à-dire le contenu d'un fichier avec un chemin d'accès associé).


Pour compléter la question que vous avez posée :

  • le déplacement d'un répertoire signifie, s'il est importé dans Git, que la source (répertoire) devra être supprimée après le traitement de tous les fichiers (c'est-à-dire importés, renommés ou non)
  • le déplacement d'un fichier, lorsqu'il est importé dans Git, est un cas classique de déplacement de fichier. git mv .

En 2011, l'OP a posé une question sur l'ancienne liste gmane .
Et la question est actuellement (2017) discuté dans Git pour Windows ( git-for-windows/git numéro 908) .

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X