2012-04-05 7 views
9

Tengo un proyecto de código abierto que quiero empaquetar en un archivo .zip que contiene los archivos binarios y el código fuente. El proyecto está alojado en CodePlex y usa TFS como control de origen. No estoy seguro de cómo exportar el proyecto para eliminar todos los enlaces de control de origen. De esta forma, las personas pueden abrir fácilmente la solución localmente sin obtener un aviso de inicio de sesión. Esta funcionalidad se llama Exportar en Git, pero no estoy seguro de cómo hacer lo mismo en Team.Getting Unbound Solution de TFS

Respuesta

11

This blog post contiene la siguiente secuencia de comandos PowerShell que se pueden ejecutar en su carpeta de control de código fuente y eliminará los enlaces de control de origen de los archivos:

# Remove unnecessary files 
get-childitem . -include *.vssscc,*.user,*.vspscc,*.pdb,Debug -recurse | 
%{ 
    remove-item $_.fullname -force -recurse 
} 

# Remove the bindings from the sln files 
get-childitem . -include *.sln -recurse | 
%{ 
    $file = $_; 
    $inVCSection = $False; 
    get-content $file | 
    %{ 
     $line = $_.Trim(); 
     if ($inVCSection -eq $False -and $line.StartsWith('GlobalSection') -eq $True -and $line.Contains('VersionControl') -eq $True) { 
      $inVCSection = $True 
     } 
     if ($inVCSection -eq $False) { 
      add-content ($file.fullname + '.new') $_ 
     } 
     if ($inVCSection -eq $True -and $line -eq 'EndGlobalSection') { 
      $inVCSection = $False 
     } 
    } 
    mv ($file.fullname + '.new') $file.fullname -force 
} 

# Remove the bindings from the csproj files 
get-childitem . -include *.csproj -recurse | 
%{ 
    $file = $_; 
    get-content $file | 
    %{ 
     $line = $_.Trim(); 
     if ($line.StartsWith('<Scc') -eq $False) { 
      add-content ($file.fullname + '.new') $_ 
     } 
    } 
    mv ($file.fullname + '.new') $file.fullname -force 

} 
+0

¡Woot Woot! Utilicé este script para sacarme de control de fuente TFS para siempre. – hylander0

+0

La siguiente crítica está dirigida a MS: esto debería ser una función incorporada.No hay necesidad de tal enclavamiento. –

+0

Awesome script! Gracias –

5

La información de enlace de control de origen es parte de los archivos VS Project y Solution, y es difícil de eliminar. Sin embargo, hay dos opciones que conozco:

Si "obtiene" el proyecto, copie/mueva la carpeta de origen a una ubicación diferente y luego vuelva a abrir la solución, VS ofrecerá eliminar los enlaces de control de origen .

Como alternativa, para hacer esto in situ, puede abrir la solución controlada por fuente en VS y luego hacer clic en Archivo/Control de fuente/Cambiar control de fuente. Este diálogo tiene un botón "Desvincular" que eliminará los enlaces para cada proyecto.

(Advertencia: probado en VS2010, no está seguro de qué versión está utilizando.)

+1

Estoy usando TFS 2010. Uno de los problemas con la simple desvinculación es que quiero evitar copiar obj/bin/folders generados. –

+0

Bueno, puedes obtener y no construir antes de desvincular. Es posible configurar un segundo espacio de trabajo en una sola máquina, y luego usarlo solo para la desvinculación. (Un poco de secuencias de comandos inteligentes probablemente también lo automatizaría con facilidad). –

+1

siempre puede limpiarlos antes de copiar. Haga una limpieza en Visual Studio obtendrá algunos de los archivos, pero si quiere estar seguro, puede agregar este comando que agregará una opción de clic derecho en el Explorador de archivos para hacer una eliminación recursiva en bin y obj. Este ejemplo es para las carpetas .svn, pero puede adaptarlo fácilmente a sus necesidades. http://weblogs.asp.net/jongalloway//shell-command-remove-svn-folders –

0

TFS no admite la exportación de código fuente sin unión. Como mencionó Dan Puzey, solo puede crear una copia del control de origen y eliminar los enlaces de control de origen.

Para mi proyecto en particular, simplemente copié los archivos y eliminé todo lo relacionado con TFS. Estaba haciendo esto como parte de la configuración de implementación que estaba usando con TeamCity para un proyecto de código abierto.

Planeo cambiar este proyecto a Git tan pronto como tenga sentido.

0

Aquí es una respuesta alternativa.

He copiado y pegado una solución con sus proyectos de una ubicación a otra y no me pide que me conecte con el control de código fuente cuando intento abrirlo en la nueva ubicación.

Cuando voy a File-> Source Control-> Advanced-> Change Source Control, no tengo la capacidad de desvinculación. Así que abrí el archivo de solución en un editor de texto y quitado la siguiente sección:

GlobalSection(TeamFoundationVersionControl) = preSolution 
.... 
EndGlobalSection 

parece estar funcionando; Espero que esto ayude a alguien.

Cuestiones relacionadas