1883 votes

Comment valider les changements de noms de fichiers en respectant la casse dans Git ?

J'ai changé le nom de quelques fichiers en dé-capitalisant la première lettre, comme dans Name.jpg a name.jpg . Git ne reconnaît pas ces changements et j'ai dû supprimer les fichiers et les télécharger à nouveau. Existe-t-il un moyen pour que Git soit sensible à la casse lors de la vérification des changements dans les noms de fichiers ? Je n'ai apporté aucune modification au fichier lui-même.

5 votes

@nif ce n'est pas tout à fait correct, Git a en fait un paramètre de configuration qui contrôle si oui ou non il ignore la sensibilité à la casse.

10 votes

Ver stackoverflow.com/a/24979063/6309 : depuis git 2.0.1, un simple git mv travaux.

0 votes

2voto

user Points 1825

J'ai pris @CBarr et a écrit un script Python 3 pour le faire avec une liste de fichiers :

#!/usr/bin/env python3
# -*- coding: UTF-8 -*-

import os
import shlex
import subprocess

def run_command(absolute_path, command_name):
    print( "Running", command_name, absolute_path )

    command = shlex.split( command_name )
    command_line_interface = subprocess.Popen( 
          command, stdout=subprocess.PIPE, cwd=absolute_path )

    output = command_line_interface.communicate()[0]
    print( output )

    if command_line_interface.returncode != 0:
        raise RuntimeError( "A process exited with the error '%s'..." % ( 
              command_line_interface.returncode ) )

def main():
    FILENAMES_MAPPING = \
    [
        (r"F:\\SublimeText\\Data", r"README.MD", r"README.md"),
        (r"F:\\SublimeText\\Data\\Packages\\Alignment", r"readme.md", r"README.md"),
        (r"F:\\SublimeText\\Data\\Packages\\AmxxEditor", r"README.MD", r"README.md"),
    ]

    for absolute_path, oldname, newname in FILENAMES_MAPPING:
        run_command( absolute_path, "git mv '%s' '%s1'" % ( oldname, newname ) )
        run_command( absolute_path, "git add '%s1'" % ( newname ) )
        run_command( absolute_path, 
             "git commit -m 'Normalized the \'%s\' with case-sensitive name'" % (
              newname ) )

        run_command( absolute_path, "git mv '%s1' '%s'" % ( newname, newname ) )
        run_command( absolute_path, "git add '%s'" % ( newname ) )
        run_command( absolute_path, "git commit --amend --no-edit" )

if __name__ == "__main__":
    main()

1voto

gopal Pandey Points 1

Si rien ne fonctionne, utilisez git rm filename pour supprimer le fichier du disque et le réinsérer.

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