Sé que esto tiene comeup antes, pero había pocas experiencias personales cotidianas en los mensajes que vi. Solo un par de respuestas. Me encantaría saber de personas que usan git-p4, o han usado git "under the covers" en un repositorio de Perforce, o preferiblemente ambos.
Y para las personas que solo usan git debajo de otro control de versión, me encantaría saber cómo lidiar con la notificación del control de la versión principal de los cambios. Específicamente, con git/forzosamente, cuando haya terminado y esté listo para enviar los cambios al servidor forzado, ¿cómo lidiará con decir forzosamente qué cambios ha habido?
He analizado los enganches post-commit con git, pero me gustaría escuchar cualquier otra idea.Entonces, ¿qué es mejor, usar git-p4 o simplemente deslizar un directorio .git en el directorio de trabajo y tener forzosamente que ignorarlo?
Respuesta
Utilicé git-p4 en el trabajo. Es un puente bidireccional, así que si quieres usar git y luego volver a comprometer tus compromisos locales en p4, es una buena forma de hacerlo. Sin embargo, la política de nuestra oficina tenía una cultura de un pequeño número de confirmaciones masivas en lugar de muchas pequeñas, por lo que tuve que volver a establecer todos los cambios en un solo parche antes de volver a ingresar en p4. Me hubiera gustado mantener la historia local bien detallada, pero volver a cometer de un solo golpe, pero nunca pude lograrlo.
Apropos change notification. git-p4
crea parches para cada registro desde el último y los envía como conjuntos de cambios por separado. Esto refleja la historia de la rama principal en la que estás trabajando en tu repositorio de git.
+1. ¿Qué tal un repo R1 dedicado a la historia local detallada (donde trabajas), empujado a tu repo administrado por P4 (RP4), y donde puedes hacer una rebase -i * there * (preservando las pequeñas confirmaciones) ?. Cuando RP4 se actualiza con nuevos datos de Perforce, R1 podría obtener de RP4, y volver a establecer la base del remoto/bifurcación en la parte superior de su propia rama detallada. Solo un pensamiento en mi cabeza. Puede ser que desencadene demasiados conflictos como para ser prácticos. – VonC
Parece viable pero bastante complicado. ¿Estás seguro de que quieres git * that * bad? –
solo si desea conservar dos conjuntos del mismo historial, ya que el repo de clonación es tan fácil de hacer con Git. Pero esto es probablemente excesivo, y solo pretendía ser un ejercicio mental rápido;) – VonC
Uso git con TFS y he elegido ir con la Opción 2: deslizo el directorio .git y hago que TFS lo ignore. Hago esto por la misma razón que @Noufal, tenemos una cultura aquí de "un gran compromiso" frente a las decenas de pequeños commits que hago en Git. Como solo me comprometo con TFS una o dos veces al día, no vale la pena que me meta con ganchos post-commit o rebases o cualquier otra cosa.
Supongo que realmente depende del diseño de su repositorio forzado - si está trabajando en una sección relativamente pequeña de él, entonces probablemente solo vaya a soltar el directorio .git directamente. Es el camino menos de resistencia por mucho y lo he utilizado con éxito en proyectos más pequeños.
Dicho esto, he luchado con este enfoque en repositorios más grandes, probablemente tanto con el flujo de trabajo donde trabajo como la gestión general de todo. Todavía tengo que echarle un vistazo a git-p4, pero es algo que me interesa investigar más.
La forma en que lo hago es tener una rama principal y ramas de función en git, y luego usar git diff --name-only master
en una rama de características para averiguar qué archivos he cambiado para una función en particular. Luego verifico esos archivos en una lista de cambios de Perforce y los envío.
... bueno, más o menos ... :) En la práctica, usamos Code Collaborator para las revisiones de código, por lo que reviso los archivos en algún momento entre el inicio de la función y el envío de los archivos para la revisión del código (realmente no importa mucho cuando). Luego verifico antes de la revisión del código que tengo todos los archivos que debería tener usando el comando git anterior. (En realidad, porque estoy paranoico, ahora hago un git clean -xdf
en mi directorio de origen y hago un Perforce "Reconcilie Offline Work" para verificar dos veces lo que voy a enviar. Luego hago una reconstrucción completa de todo el proyecto. Romper la construcción es vergonzoso, después de todo.) Una vez que todas las revisiones terminaron, simplemente envié la lista de cambios como siempre.
Es un poco faff, de verdad, pero ahora no es tan malo, ya me he acostumbrado, y es mucho mejor que usar Perforce con commits masivos, y trabajar efectivamente sin ningún tipo de control de versión por días a la vez :)
- 1. Buscar la revisión de Git de un directorio de trabajo que falta el directorio .git
- 2. sin cambiar el directorio de trabajo
- 3. git force push actual directorio de trabajo
- 4. ¿Cómo ejecuto un script arbitrario con un directorio de trabajo del directorio en el que está?
- 5. ¿Cómo se actualiza el directorio de trabajo en "git checkout"?
- 6. Cambiando el directorio de trabajo
- 7. Lo que es mejor en CSS: div.algo o simplemente .algo
- 8. Git eliminar el directorio
- 9. ¿Cómo lograr que R reconozca su directorio de trabajo como su directorio de trabajo?
- 10. ¿Qué es un directorio raíz?
- 11. Git pull y especificar el directorio?
- 12. Git aplica un parche al directorio de trabajo
- 13. PHP: Cómo establecer el directorio de trabajo actual para que sea el mismo que el directorio que ejecuta el script
- 14. Permisos por directorio en git
- 15. Use JSch para poner un archivo en el directorio remoto y si el directorio no existe, entonces créelo
- 16. Dist de directorio de trabajo con extensiones de Git
- 17. Capistrano carga el directorio .git
- 18. ¿Cómo establecer el directorio de trabajo para Node.js en Windows?
- 19. Git: repo contiene un directorio vacío, ¿qué ocurre?
- 20. Cambie el directorio de trabajo en Xcode
- 21. Buscar el directorio de instalación y el directorio de trabajo de VSTO Outlook Addin; o cualquier complemento de Office
- 22. git ls-tree salida del directorio de trabajo?
- 23. SWI Prolog cambiar el directorio de trabajo/obtener el directorio de trabajo actual?
- 24. ¿Cómo borro mi directorio de trabajo local en git?
- 25. Cambiar el directorio de trabajo de msbuild.exe
- 26. ¿Puede un archivo MAKE tener un directorio como destino?
- 27. ¿Cuál es la diferencia entre un árbol y un directorio?
- 28. SQL Plus: cómo cambiar el directorio y mostrar el directorio de trabajo actual
- 29. ¿Por qué git-bisect debe ejecutarse desde el directorio de nivel superior del árbol de trabajo?
- 30. Correo electrónico del autor de Git Commit ¿cambia según el directorio y/o el proyecto?
¿Estás usando git para tu propio uso local, o planeas compartir el repositorio con otros? –