2012-08-15 9 views
10

Necesito ayuda para resolver el problema siguiente:TFS 2012 Unshelve de diferente rama -> un elemento con la misma clave ya ha sido añadido

que estoy tratando de código unshelve de la bifurcación de origen a una rama de destino.

Estoy utilizando el siguiente:

  • VS2012 RC
  • TFS 2012
  • VS2012 x64 Cruz comandos de las herramientas

Cuando uso la línea de comandos para realizar la operación unshelve, ocurre lo siguiente:

  1. El diálogo de detalles del conjunto de armarios se muestra con la lista de archivos de cambio.
  2. Haga clic en el botón Unshelve.
  3. Observe la salida del símbolo del sistema: "Ya se ha agregado un elemento con la misma clave".

He descargado ServicePack1 para herramientas eléctricas. Sin embargo, no he podido resolver este problema.

+0

¿Cuántos elementos tiene usted en el conjunto de cambios aplazados? Si intentas hacerlos individualmente, ¿funcionan o se atraganta con uno de ellos? –

+0

Tengo más de 100 artículos en el estante. Intenté hacer uno a la vez y aún falla. –

+0

Hola Scott, ¿fallaron todos los intentos de unshelve o fallaron en uno de los artículos específicamente? ¿Qué sucede si crea un nuevo espacio de trabajo y luego intenta desmantelarlo en ese espacio de trabajo? –

Respuesta

2

intenta eliminar todos los archivos en la siguiente carpeta y reiniciar VS2012 (Source):

C: \ Users [nombre de usuario] \ AppData \ Local \ Microsoft \ Team Foundation \ 4.0 \ Cache

8

Tuve el mismo problema y lo solucioné cuando volví a archivar el conjunto de cambios desde la rama de origen pero decidí no guardar los cambios pendientes localmente. Después de esto, la migración del nuevo estante se desarrolló sin problemas.

(También se aseguró de que había seguido los pasos recogidos de otras respuestas en este sitio)

  • utilizar un espacio de trabajo que abarca tanto las de origen y destino ramas
  • ejecutar el comando desde la carpeta asignada a la rama de origen
  • Buscar presupuestos alrededor de las rutas que contienen espacios
  • Eliminación de la memoria caché en C: \ Usuarios [USERNAME] \ AppData \ Local \ Microsoft \ Team Foundation \ 4.0 \ caché y reiniciar Visual Studio
+0

Para mí esto funcionó pero sin tener que eliminar el caché – Redeemed1

+0

Finalmente, he visto algunos comandos de eliminación/edición/cambio de nombre. Pero los cambios todavía no están dentro de la nueva rama. – C4u

8

que tenían el mismo error al utilizar Visual Studio 2013 y el siguiente comando:

> tfpt unshelve /migrate /source:"$/Root/Solution" /target:"$/Root/Branches/Solution" "The name of my shelveset" 
> An item with the same key has already been added 


Investigación

Esto es lo que intentado solucionar el problema:

  • Borrar la caché de acuerdo con la respuesta de Andrey
  • intente ejecutar el comando desde el Fuente -> Poder y Branch -> Fuente
  • Mi espacio de trabajo ya abarcaba ambos de origen y destino ramas


Solución

Abra su equivalente del VS2013 x86 Native Tools Command Pr ompt.

  1. Compruebe que ha recibido Team Foundation Herramientas de potencia instalada:

    C: \ Archivos de programa (x86) \ Microsoft Visual Studio 12.0 \ VC \ TFPT

  2. Asegúrese de que tiene 0 Pendiente y Excluidos cambios.
    Tuve algunos cambios Excluidos que se detectaron pero no se agregaron y esto es lo que me sorprendió. cambios excluidos deberían tener este aspecto:

    enter image description here
    Nota: Sin "Detectado: XX (añade)" - debe no ser visible

  3. Cuando se ejecuta tf status, debería ver algo como el seguimiento.
    O 1 cambio (s) para el archivo .tfignore o 0 cambios. Cualquier otra cosa alterará la fusión.

    C: \ TFS \ Root \ Solution> tf estado
    nombre del archivo cambiar la ruta local


    $/.tfignore Raíz editar C: \ TFS \ Root \ Solution.tfignore

    1 cambio (s)

  4. Asegúrese de que está ejecutando el comando tfpt desde el directorio solución de código

Usted debe ahora ser capaz de combinar con éxito un conjunto de cambios aplazados de una rama a otro.

Nota sobre .tfsignore:
Si usted tiene una gran cantidad de cambios pendientes que no desea deshacer por cualquier razón, entonces una modificación en el archivo .tfignore está bien.

Si este es el único archivo que le queda con los cambios, no frenará la fusión.
referencia .tfignore =>stackoverflow - How to ignore files/directories in tfs?

+1

Respuesta muy detallada, y solucionó el problema. –

+1

¡Yesss! Trabajó para mí también. Key estaba limpiando los cambios pendientes. – Ashby

+0

'tf undo/recursive' es un comando útil aquí. – stuartd

4

Trate de deshacer todos los cambios de origen y de destino rama, y ​​luego vuelve a intentarlo ...

Cuestiones relacionadas