Obtener la identificación del conjunto de cambios actual en el espacio de trabajo para TFS

80

¿Cómo averiguo qué conjunto de cambios tengo actualmente en mi espacio de trabajo local?

Claro, puedo elegir un archivo y ver su historial. Sin embargo, si ese archivo no se actualizó recientemente, su conjunto de cambios probablemente sea más antiguo que los archivos actualizados más recientemente en la misma solución.

Un posible error que podemos cometer es que vemos el historial en el archivo de la solución; sin embargo, el archivo de la solución rara vez cambia a menos que esté agregando un nuevo proyecto o realizando cambios en el nivel de la solución.

Al final, para averiguar el conjunto de cambios, necesito recordar cuáles fueron los últimos archivos modificados y ver su historial.

¿Hay una mejor manera de hacer esto?

boyan
fuente
¿Por qué quiere conocer su conjunto de cambios actual?
Ewald Hofman
¿Qué sucede cuando su espacio de trabajo no es representativo de un conjunto de cambios? Considere que ha $/Amapeado y ha recuperado el conjunto de cambios A, y ha $/Bmapeado y ha recuperado el conjunto de cambios B. ¿En qué conjunto de cambios se encuentra su espacio de trabajo?
Edward Thomson
8
@Ewald Considere retroceder en el tiempo para saber cuándo comenzó a ocurrir un error. Esto podría requerir realizar operaciones de "Obtener versión específica" varias veces en su espacio de trabajo para llegar a conjuntos de cambios anteriores que pueden ser muy tediosos, extensos y propensos a errores. Ser capaz de saber qué conjunto de cambios preciso se encuentra actualmente en el espacio de trabajo es extremadamente útil para evitar errores de distracción y confirmar al culpable. Me alegro de haber encontrado ese comando hoy.
Louis
1
¡Recomiendo esta pregunta!
Fernando Espinosa
Bienvenido a más de 5 años después. Para responder a la pregunta de @EwaldHofman, en mi escenario, hice varios cambios en mi espacio de trabajo y quiero ver qué ha cambiado en el servidor desde que hice mi último 'get'. En mi caso, no sé qué versión 'obtuve' por última vez.
JMD

Respuestas:

4

La respuesta común para usar tf.exe history . /r directamente funciona, pero puede ser terriblemente lenta. En nuestro caso, tarda de 10 a 15 segundos. Ahora uso una verificación de dos etapas, primero verificando la revisión de algunos archivos arbitrarios (estoy usando los archivos en la carpeta raíz).

Con powershell:

$tfexepath = "C:\Program Files (x86)\Microsoft Visual Studio\2017\Enterprise\Common7\IDE\CommonExtensions\Microsoft\TeamFoundation\Team Explorer\tf.exe"
$localpath = "C:\some\tfs\directory"

$result = & $tfexepath history $localpath /noprompt /stopafter:1 /version:W 
"$result" -match "\d+" | out-null
$id = $matches[0]

Luego busque desde la raíz usando el indicador / r, pero limite la búsqueda para comenzar desde la revisión que se encuentra arriba:

$result2 = & $tfexepath history $localpath /r /noprompt /stopafter:1 /version:$id~W        
"$result2" -match "\d+" | out-null
$id2 =  $matches[0]

#result:
Write-Host $id2 

Para nuestra base de código, esto reduce el tiempo total de 10-15 a 1.4-1.5 segundos.

Por lo que tengo entendido, no hay inconvenientes ni limitaciones, pero supongo que podría ser más lento en un repositorio pequeño. - Me alegraría saberlo.

Johan Lundberg
fuente
1
Excelente alternativa. Redujo mi tiempo de ejecución de 55 segundos a 1,5 segundos. ¡Gracias!
bobroxsox
1
.... en retrospectiva - sorprendido de poder vivir con msvc y feliz de que sea algo con lo que tuve que lidiar solo en el pasado.
Johan Lundberg
3

Ejecute un CMD de Visual Studio (en mi caso, para VS2015 se llama: "Símbolo del sistema de desarrollador para VS2015") y luego ingrese a la carpeta de su proyecto y ejecute el siguiente comando:

tf history . /r /noprompt /stopafter:1 /version:W
xero399
fuente
2
¡Gracias! Sin esa respuesta, todavía me habría preguntado por qué el comando no funciona en el panel de "ventana de comandos" dentro de Visual Studio.
ojdo
1

Si desea utilizar PowerShell ( consulte también ; equivalente a la respuesta de @kroonwijk ):

  1. habilitar tfs snapin (una vez, si aún no)

    add-pssnapin Microsoft.TeamFoundation.PowerShell

  2. use el cmdlet tfs para obtener la identificación del conjunto de cambios actual

    Get-TfsItemHistory <PATH_TO_PROJECT> -Recurse -Stopafter 1 -Version W

fuma
fuente
0

Si realmente no tiene idea de qué versión tiene, debe usar uno de los otros métodos sugeridos. Si no está seguro de tener una versión específica o no está seguro entre algunos conjuntos de cambios y prefiere trabajar desde la GUI de VS TFS, puede seguir estos pasos:

  1. Elija el conjunto de cambios del que desea estar seguro y compare: ingrese la descripción de la imagen aquí
  2. Si no tiene ninguna diferencia: ingrese la descripción de la imagen aquí

    o, si los únicos archivos que son diferentes son archivos en los que tiene cambios pendientes: ingrese la descripción de la imagen aquí

Eso significa que está actualizado con la versión en cuestión.

  1. ** Si no está seguro de si el archivo que tiene un cambio pendiente en realidad tampoco está actualizado, puede verificar esa versión del archivo con las propiedades: ingrese la descripción de la imagen aquí
Ravid Goldenberg
fuente