2012-04-05 2 views
9

J'ai un projet open source que je veux empaqueter dans un fichier .zip contenant les binaires et la source. Le projet est hébergé sur CodePlex et utilise TFS comme contrôle source. Je ne suis pas sûr comment exporter le projet pour supprimer toutes les liaisons de contrôle de source. De cette façon, les utilisateurs peuvent facilement ouvrir la solution localement sans avoir d'invite de connexion. Cette fonctionnalité est appelée Export dans Git, mais je ne suis pas sûr de savoir comment faire la même chose dans Team.Obtenir une solution non liée à partir de TFS

Répondre

11

This blog post contient le script suivant qui PowerShell peut être exécuté sur votre dossier de contrôle de code source et supprimera les liaisons de contrôle de code source des fichiers:

# 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! J'ai utilisé ce script pour me débarrasser du contrôle de source TFS pour de bon. – hylander0

+0

La critique suivante vise à MS: cela devrait être une fonctionnalité intégrée.Il n'y a pas besoin d'un tel verrouillage. –

+0

Script génial! Merci –

5

Les informations de liaison de contrôle de source font partie des fichiers VS Project et Solution et sont difficiles à supprimer. Cependant, il y a deux options que je connais:

Si vous "obtenez" le projet, copier/déplacer le dossier source à un emplacement différent, puis rouvrez la solution, VS proposera de supprimer les liaisons de contrôle de source . Sinon, pour ce faire, vous pouvez ouvrir la solution contrôlée par la source dans VS, puis cliquer sur Fichier/Contrôle de la source/Modifier le contrôle de la source. Ce dialogue a un bouton "Unbind" qui supprimera les liaisons pour chaque projet.

(caveat: testé sur VS2010, pas sûr de la version que vous utilisez.)

+1

J'utilise TFS 2010. L'un des problèmes avec la déliaison est que je veux éviter de copier les fichiers obj/et bin/générés. –

+0

Eh bien, vous pouvez obtenir et ne pas construire avant de vous délier. Il est possible de configurer un deuxième espace de travail sur une seule machine, puis de l'utiliser uniquement pour le désengagement. (Un peu de scripts astucieux automatiserait probablement cela aussi facilement.) –

+1

vous pouvez toujours les nettoyer avant de les copier. Faire un nettoyage dans Visual Studio obtiendra certains des fichiers, mais si vous voulez être sûr, vous pouvez ajouter cette commande qui ajoutera une option de clic droit dans l'explorateur de fichiers pour faire une suppression récursive sur bin et obj. Cet exemple concerne les dossiers .svn, mais vous pouvez facilement l'adapter à vos besoins. http://weblogs.asp.net/jongalloway//shell-command-remove-svn-folders –

0

TFS ne supporte pas le code source d'exportation sans se lier. Comme Dan Puzey l'a mentionné, vous pouvez simplement créer une copie du contrôle source et supprimer les liaisons du contrôle source.

Pour mon projet particulier, j'ai simplement copié les fichiers et supprimé tout ce qui est associé à TFS. Je faisais cela dans le cadre de la configuration de déploiement que j'utilisais avec TeamCity pour un projet open source.

Je prévois de passer ce projet à Git dès que cela sera possible.

0

est ici une réponse alternative.

J'ai copié et collé une solution avec ses projets d'un endroit à un autre et je ne suis pas invité à me connecter au contrôle de source lorsque j'essaie de l'ouvrir au nouvel emplacement. Quand je vais dans Fichier-> Contrôle de source-> Avancé-> Changer le contrôle de source, je n'ai pas la possibilité de dissocier. J'ai donc ouvert le fichier de solution dans un éditeur de texte et supprimé la section suivante:

GlobalSection(TeamFoundationVersionControl) = preSolution 
.... 
EndGlobalSection 

Semble être fonctionnel; J'espère que ça aide quelqu'un.

Questions connexes