visual traduccion tool meaning helix perforce

traduccion - ¿Cómo eliminar archivos sin seguimiento de un árbol de trabajo de Perforce?



perforce visual merge tool (11)

¿Cuál es el equivalente de "git clean" con Perforce?

git-clean - Elimina los archivos sin seguimiento del árbol de trabajo

Limpia el árbol de trabajo mediante la eliminación recursiva de archivos que no están bajo el control de versiones, comenzando desde el directorio actual.

-x No use las reglas de ignorar estándar que se leen desde .gitignore (por directorio) y $ GIT_DIR / info / exclude, pero aún así use las reglas de ignorar dadas con las opciones -e. Esto permite eliminar todos los archivos sin seguimiento, incluidos los productos de compilación. Se puede utilizar (posiblemente junto con git reset) para crear un directorio de trabajo prístino para probar una construcción limpia.

-X Eliminar solo los archivos ignorados por Git. Esto puede ser útil para reconstruir todo desde cero, pero mantener los archivos creados manualmente.


El nuevo P4 limpio debería hacer el truco.


En Linux, puedes hacerlo sin un archivo temporal:

find . -type f | p4 -x- have 2>&1 >/dev/null | grep "not on client" | cut -d " " -f1 | xargs -ifoo echo rm foo


En Windows:

@ECHO OFF SETLOCAL EnableDelayedExpansion IF "%1"=="" ( SET proceed=N ECHO Are you sure you wish to nuke all files under: ECHO %CD% SET /P proceed="Y/N: " ECHO !proceed! IF /I "!proceed!"=="Y" ( ECHO Nuking %cd% FOR /F "tokens=1 delims=-#" %%G IN (''p4 reconcile -nlad -f ...'') do ( DEL /F "%%G" ) ) ) ELSE IF /I "%1"=="-n" ( ECHO Files to be deleted 1>&2 FOR /F "tokens=1 delims=-#" %%G IN (''p4 reconcile -nlad -f ...'') do ( ECHO "%%G" ) ) ELSE GOTO :USAGE GOTO :STOP :USAGE ECHO Usage: nuke [-n] ECHO -n will only write the files to be deleted but will not actually delete them :STOP


Este funciona mucho mejor:

@ECHO OFF SETLOCAL EnableDelayedExpansion IF "%1"=="" ( SET proceed=N ECHO Are you sure you wish to nuke all files under: ECHO %CD% SET /P proceed="Y/N: " ECHO Looking for files to be deleted. This may take some time depending on the depth of your tree. 1>&2 IF /I "!proceed!"=="Y" ( ECHO Nuking %cd% FOR /F "tokens=1 delims=#" %%G IN (''p4 reconcile -nla -f ...'') DO ( DEL /F %%G ) ) ) ELSE IF /I "%1"=="-n" ( ECHO Looking for files to be deleted. This may take some time depending on the depth of your tree. 1>&2 ECHO Files to be deleted 1>&2 FOR /F "tokens=1 delims=#" %%G IN (''p4 reconcile -nla -f ...'') DO ( ECHO %%G ) ) ELSE GOTO :USAGE GOTO :STOP :USAGE ECHO Usage: nuke [-n] ECHO -n will only write the files to be deleted but will not actually delete them :STOP


Existen diferencias sutiles en el comportamiento entre p4 clean "Restaurar archivos de área de trabajo para que coincidan con el estado de los archivos de depósito correspondientes" y git clean "Eliminar archivos no rastreados del árbol de trabajo", así que lea los manuales cuidadosamente.

En particular, vanilla p4 clean revertirá los cambios que haya realizado en archivos fuera de cualquier lista de cambios pendiente. Por lo tanto, es prudente probar el resultado con la opción ''correr'' p4 clean -n .

Según entiendo:

  • p4 clean -a emula git clean "Eliminar archivos sin seguimiento del árbol de trabajo".
  • p4 clean -a -I emula git clean -x "Eliminar todos los archivos sin seguimiento, incluidos los productos de compilación".

Para mi frustración, no hay un análogo exacto de git clean -X "Eliminar solo archivos ignorados por Git", pero puede aproximarlo trabajando con la p4 reconcile :

  • p4 reconcile -a && p4 clean -a -I . Los archivos no rastreados que coincidan con la lista de ignorados se eliminarán, los demás se moverán a la lista de cambios predeterminada.


No hay equivalente. Perforce no tiene un comando para eliminar archivos que no están bajo su control. Puede verlos en P4V, en la pestaña Espacio de trabajo (tienen iconos blancos en lugar de los iconos alineados con el punto verde) y eliminarlos manualmente. Si desea automatizar el proceso, lo más fácil sería eliminar los archivos de su área de trabajo, eliminar todo lo que esté en el directorio y luego volver a sincronizarlo. Un archivo por lotes para hacerlo se vería algo así:

p4 sync "//depot/someFolder/...#0" erase C:/projects/someFolder/*.* /s /q /f rd C:/projects/someFolder /s /q p4 sync -f "//depot/someFolder/..."

La primera línea es opcional si utiliza los interruptores de fuerza en los comandos de borrado y sincronización.

Sin embargo, esa solución tiene sus inconvenientes. Si actualmente está trabajando en alguno de los archivos, obviamente no desea borrarlos. Además, una sincronización completa puede tardar bastante tiempo si hay una gran cantidad de datos en el árbol de directorios que desea limpiar.

Una mejor manera de hacerlo sería hacer que su utilidad limpia (creo que en este momento hemos crecido más allá de un archivo por lotes) tome la lista de archivos bajo el control de versiones usando el comando p4 files . Luego repita todos los archivos en el directorio, borrando aquellos que no aparecen en la lista.


Prueba (para Unix) desde tu nivel superior:

# Find all files and filter for those that are unknown by Perforce find . -type f | p4 -x - fstat 2>&1 > /dev/null | sed ''s/ -.*$//'' > /tmp/list ### manually check /tmp/list for files you didn''t mean to delete # Go ahead and remove the unwanted files. xargs rm < /tmp/list

O, para un tipo de enfoque clean -f, simplemente canalice directamente a xargs rm en lugar de preparar primero la lista de archivos en / tmp / list.


Usando P4V, puede hacer clic derecho en una carpeta y seleccionar "Conciliar trabajo sin conexión ...". En el panel central ("Archivos locales que no están en el depósito"), se mostrarán todos los archivos que Perforce puede encontrar en el árbol de carpetas que no están en el depósito. Puede seleccionar algunos o todos estos y haga clic con el botón derecho y seleccione "Eliminar archivo local"

Esto no es un script, pero es mucho más fácil que la mayoría de las otras soluciones en Windows.


Uso los siguientes comandos en caso de que mi lista de cambios no tenga cambios.

  • Ejecute el comando ''p4 reconcile'' que reconcilia todos los cambios realizados fuera de Perforce (la clave -a se puede usar si solo necesita archivos sin seguimiento).
  • Ejecute ''p4 revert path / ..., v'' que elimina los archivos de servicio (con, v sufijo, se agregan mediante reconciliación) de la lista de cambios pero los dejó en el sistema de archivos
  • Ejecutar ''p4 revert -w path / ...'' thet elimina todos los demás archivos de la lista de cambios y el disco.

No puedes, frustrantemente,. No hay análogo de svn clean o git clean . Una pena, estos son comandos muy útiles.

Aquí hay una apelación en el sitio web de Perforce para que los desarrolladores agreguen un comando limpio. perforce.ideas.aha.io/ideas/P4V-I-7