control de la versión de la línea de command con Java – que trata con muchos directorys nesteds

Usando la línea de command git con Java. Nuestro proyecto tiene toneladas de packages nesteds que, por supuesto, significa muchos directorys nesteds.

Escribir estos directorys en la command-line se está convirtiendo en un PITA y parece inevitable para ciertas operaciones no cotidianas como "git rm". Especialmente cuando muevo cosas en Eclipse, entonces necesito ponerme al día en la command-line, pero los files ya no existen (no puedo usar expansión de shell o *). Además, la expansión del shell no tiene en count los files ignorados, y el envío de files ignorados a un command git hace que el command aborte (con razón). No estoy interesado en la integración de IDE por razones fuera del scope de esta pregunta.

¿Alguien pensó en hacer esto más fácil?

Estoy en win7 / powershell, pero también estoy abierto a sugerencias usando bash o batch.

No estoy familiarizado con win7 / powershell. Asumiendo que sus nombres de class son únicos, en bash puede encontrar files con

find . -name SomeFile.java 

Entonces podrías "git rm" con ellos

 git rm $(find . -name SomeFile.java) 

Por supuesto, si no desea escribir "search.-Nombre" cada vez, puede crear una function en su .bashrc para simplificar eso. ¿PowerShell soporta algo similar? Si no, ¿qué hay de search en cygwin, que te permite ejecutar bash?

EDITADO

Si sus nombres de class no son únicos, este enfoque no funcionará tan bien.

No he usado git antes, pero uso Perforce. Supongo que necesita hacer reference a una serie de directorys y no puede usar comodines por algún motivo. Luego, en PowerShell, puedes usar construcciones como esta:

 ## Find all directories named "test*" dir * -inc test* -r | ? {$_.PSIsContainer} | % {git <some command> $_.FullName} ## Find all files and directories named "test*.*" dir * -inc test*.* -r | % {git <some command> $_.FullName} 

También podría escribir una function de envoltura para que sea más fácil. Aquí hay algo para que comiences.

 Function git { param( [Parameter(Position = 0, Mandatory = $true)] [String]$Command , [Alias("PSPath")] [Parameter(Position = 1, ValueFromPipelineByPropertyName = $true)] [String[]]$Path ) process { if ($Path) { $Path | {git.exe $Command $_} } else { git.exe $Command } } } 

No sabía acerca de git add -A – y después de usar esto por un par de días, no he tenido tanta frustración en el path. Informará de nuevo.

Si desea evitar escribir todas las routes, puede usar TortoiseGit y realizar la administración a través de una GUI.

También me gusta utilizar la command-line, pero cuando se trata de casos determinados (por ejemplo, revertir 20 files a la vez), me resulta más fácil verificar los files en el cuadro de dialog de reversión y simplemente hacer clic en Aceptar. Para mí, TortoiseGit no es un reemploop para la console de Git, sino una extensión muy conveniente para él.

Desafortunadamente, su caso de uso mencionado (eliminar múltiples files a la vez) no se puede lograr con TortoiseGit . Si tuviera que eliminar un montón de files a la vez, le pediría a git que me diga qué files están actualmente versionados ( git ls-files ), canalice esa list en un file, edítelo y luego haga un git rm para cada file dejado en el file editado.

¿Has probado EGit ? No es la interfaz de usuario de git más espectacular que hayas visto, pero si ya usas eclipse, te será más fácil. También es agradable ver los pequeños mini icons en Eclipse mostrando qué files han cambiado y cuáles no.

¿Has probado el git frente a git gui ? Por lo general, viene con git y es de gran ayuda para organizar rápidamente un montón de files.