Pregunta

Estoy en el medio de la creación de un script para hacer gran cantidad de movimientos en mi TFS instancia.Tengo el tfs cmdlets disponibles con el 2010 TFS Power Tools, pero la documentación de ayuda para ellos es muy escasa.Específicamente, el Add-TfsPendingChange no parecen apoyar cambiar el nombre, que me obliga a usar "tf.exe cambiar el nombre de" en su lugar.

En primer lugar:he de alguna manera se perdió la documentación de los cmdlets?He tratado de obtener ayuda en los comandos, pero no apoyo detallada o -ejemplos de indicadores.Es nada más disponible?

En segundo lugar:qué razón tengo para preferir alguno de los cmdlets más regular tf.exe?Hay otros beneficios que pasar objetos a través de la tubería, cuando el desempeño de funciones similares?

¿Fue útil?

Solución

Los cmdlets TF son un poco de una oferta minimalista en este punto y que incluye la documentación proporcionada.En general, usaría los Cmdlets TF donde apoyan lo que estoy tratando de hacer, especialmente si tiene alguna consulta.El procesamiento de la salida de los cmdlets de la consulta es mucho más fácil porque le brindan objetos ricos en lugar de la transmisión de texto que tiene que analizar al usar algo como tf status . /r.

También tenga en cuenta que en un sistema de Windows X64, los Cmdlets TF solo funcionan en un host PowerShell de 32 bits.

Otros consejos

Los cmdlets TF no son exactamente inútiles, pero ... decidimos contra tratar de usarlos en nuestro entorno de construcción en este momento, aunque signifique el análisis de texto.

Aparte de la cosa x64, hay un montón de comandos faltantes (gracias @Keith) y los parámetros faltantes, y lo más importante , no funcionan en sesiones remotas!

Una tercera opción es el uso de la TFS asambleas públicas desde dentro de PowerShell.Al hacer esto, usted puede tener acceso a todos los TFS capacidades del cliente y seguir utilizando TFS cmdlets así.Si usted elige este método más de tf.exe y el otro TFS de la línea de comandos ejecutables depende del entorno de secuencias de comandos que usted prefiera.

Aquí hay una de un comando de PowerShell para hacer referencia a la TFS 2013 asambleas públicas (de TFS 2012 o 2010 acaba de cambiar Version=12.0.0.0 a Version=11.0.0.0 o Version=10.0.0.0).

'Microsoft.TeamFoundation.Client', 'Microsoft.TeamFoundation.Common', 'Microsoft.TeamFoundation.VersionControl.Client' |
    ForEach-Object {
        Add-Type -AssemblyName "$_, Version=12.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a"
    }

Para cambiar el nombre de su ejemplo, usted podría entonces:

  1. El uso de la Get-TfsWorkspace cmdlet para crear una instancia de un Microsoft.TeamFoundation.VersionControl.Client.Workspace objeto.
  2. Llame a la Workspace del objeto PendRename, GetPendingChanges y Checkin métodos.

Algo como esto:

$workspace = Get-Workspace
$workspace.PendRename($oldItemPath, $newItemPath)
$pendingChange = $workspace.GetPendingChanges($oldItemPath)
$workspace.Checkin($pendingChange, $comment)
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top