2010-08-16 19 views
8

cuando golpeo 'git status', que muestra 2 carpetas que contienen archivos que se realiza un seguimiento hace mucho tiempo:Git en Windows: ¿Por qué de repente tengo un directorio sin seguimiento que solía rastrearse?

$ git status 
# On branch master 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  src/UI/Views/Shared/EditorTemplates/ 
#  src/Web/helpers/ 

nothing added to commit but untracked files present (use "git add" to track) 

Git GUI no muestra nada como se esperaba.

Usando portablegit 1.7.1, pero intenté 1.7.0.2 - mismos resultados.

¿Qué puede causar eso?


$ cat .gitignore 
.nu/* 
lib/* 
*~ 
*.swp 
*.swo 
*_ReSharper* 
doc/* 
RAPLM.suo 
RAPLM.5.1.ReSharper.user 
src/*/bin/* 
src/*/obj/* 
src/*/Debug/* 
src/*/Release/* 
src/Domain/unused 

@Charles Bailey

[email protected] /d/work/asdf (master) 
$ git status 
# On branch master 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  src/UI/Views/Shared/EditorTemplates/ 
#  src/Web/helpers/ 
nothing added to commit but untracked files present (use "git add" to track) 

[email protected] /d/work/asdf (master) 
$ git add src/Web/helpers/ 

[email protected] /d/work/asdf (master) 
$ git add src/Web/helpers/* 

[email protected] /d/work/asdf (master) 
$ git status 
# On branch master 
# Untracked files: 
# (use "git add <file>..." to include in what will be committed) 
# 
#  src/UI/Views/Shared/EditorTemplates/ 
#  src/Web/helpers/ 
nothing added to commit but untracked files present (use "git add" to track) 

[email protected] /d/work/asdf (master) 
$ 

@Charles

$ git ls-árbol -r CABEZA | grep -i ayudantes
100.644 blob 843de27f850308786140a7c09f67b5ef99184630 src/web/ayudantes/HtmlHelperExtensions.cs

+0

eche un vistazo a su archivo .gitignore. – adamk

+0

@adamk lo hice. ¿Qué cambió? :/ –

+0

@Arnis: Fue una corazonada, supongo que no lo es ... – adamk

Respuesta

13

Charles Bailey diagnosticados correctamente el problema en los comentarios: "git add" en un caso insensible Os.

que está vinculada a issue 286 de msysgit: "Caso Sensitity del Directorio Nombres", y los restos de emisión (de nuevo, para directorios ) aunque ajuste core.ignorecase true.

Cuando se agrega "src\Web" (con mayúscula 'W '), no va a añadir nada si su índice ya contiene 'src\web' (en minúsculas' w').

Un parche se propuso, pero rechazó:

La carpeta parece ser catalogado como sin seguimiento debido directory_exists_in_index() trata de comparar el nombre antiguo al nuevo nombre, y terminando no encontrar una coincidencia para el nueva carpeta (¡aunque el archivo dentro de ella sigue siendo rastreado!).
Se ha escrito un parche muy grosero (en la parte inferior) para intentar solucionar el problema.
Ahora ... para mi caso mínimo, esto funciona: el directorio ya no aparece como no rastreado. Pero espero que esto sea un parche BROKEN por al menos la siguiente razón: la comparación insensible a mayúsculas y minúsculas debería romper la búsqueda binaria, ya que la carcasa debería devolver la posición incorrecta si tuviera más archivos en el índice.

dir.c | 2 +- 
1 files changed, 1 insertions(+), 1 deletions(-) 

diff --git a/dir.c b/dir.c 
index e05b850..c55a15c 100644 
--- a/dir.c 
+++ b/dir.c 
@@ -444,7 +444,7 @@ static enum exist_status directory_exists_in_index(const char 
*dirname, int len) 
       struct cache_entry *ce = active_cache[pos++]; 
       unsigned char endchar; 

-    if (strncmp(ce->name, dirname, len)) 
+    if (strnicmp(ce->name, dirname, len)) 
         break; 
       endchar = ce->name[len]; 
       if (endchar > '/') 
-- 
1.6.4.msysgit.0.2.gcb017.dirty 

por lo que necesita:

  • cambio de su 'Web' en 'web' en el directorio de trabajo (sistema de archivos)
  • o cambiar su 'web' en ' Web 'en el índice (git mv src/web src/Web) en su índice.
+0

Para mí está bien solo saber que es sensible a mayúsculas y minúsculas. –

Cuestiones relacionadas