2012-04-05 17 views
9

Ho un progetto open source che voglio impacchettare in un file .zip contenente i binari e la fonte. Il progetto è ospitato su CodePlex e utilizza TFS come controllo del codice sorgente. Non sono sicuro di come esportare il progetto per rimuovere tutti i collegamenti di controllo del codice sorgente. In questo modo le persone possono facilmente aprire la soluzione localmente senza ottenere un prompt di accesso. Questa funzionalità è chiamata Esporta in Git, ma non sono sicuro di come fare la stessa cosa in Team.Ottenere una soluzione non vincolante da TFS

risposta

11

This blog post contiene il seguente script PowerShell che può essere eseguito sul vostro cartella di controllo del codice sorgente e rimuoverà le associazioni controllo del codice sorgente dai file:

# 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! Ho usato questo script per farmi uscire dal controllo del codice sorgente TFS per sempre. – hylander0

+0

Le seguenti critiche sono rivolte alla SM: questa dovrebbe essere una funzione integrata.Non c'è bisogno di un simile lock-in. –

+0

Script impressionante! Grazie –

5

Le informazioni sul binding del controllo sorgente fanno parte dei file VS Project e Solution ed è difficile da rimuovere. Tuttavia, ci sono due opzioni che conosco:

Se "ottieni" il progetto, copia/sposta la cartella di origine in un percorso diverso, quindi riapri la soluzione, VS offrirà di rimuovere i collegamenti di controllo del codice sorgente .

In alternativa, per eseguire questa operazione sul posto, è possibile aprire la soluzione di controllo sorgente in VS, quindi fare clic su File/Controllo origine/Cambia controllo origine. Questo dialogo ha un pulsante "Unbind" che rimuoverà i binding per ogni progetto.

(Caveat: testato su VS2010, non è sicuro di quale versione si sta utilizzando.)

+1

Sto usando TFS 2010. Uno dei problemi con il solo unbinding è che voglio evitare di copiare oggetti/bin/cartelle generati. –

+0

Beh, potresti ottenere e non costruire prima di smetterti. È possibile impostare un secondo spazio di lavoro su una singola macchina, quindi utilizzarlo solo per lo slegamento. (Un po 'di script intelligente probabilmente lo automatizzerebbe abbastanza facilmente.) –

+1

puoi sempre eliminarli prima di copiare. Fai un Clean in Visual Studio otterrà alcuni dei file, ma se vuoi essere sicuro, puoi aggiungere questo comando che aggiungerà un'opzione per il clic destro in Esplora file per eseguire un'eliminazione ricorsiva su bin e obj. Questo esempio è per le cartelle .svn, ma puoi facilmente adattarlo alle tue esigenze. http://weblogs.asp.net/jongalloway//shell-command-remove-svn-folders –

0

TFS non supporta l'esportazione del codice sorgente senza incepparsi. Come menzionato da Dan Puzey, puoi semplicemente creare una copia del controllo del codice sorgente e rimuovere i collegamenti del controllo del codice sorgente.

Per il mio particolare progetto, ho semplicemente copiato i file e cancellato qualsiasi cosa associata a TFS. Lo stavo facendo come parte della configurazione di distribuzione che stavo usando con TeamCity per un progetto open source.

Ho intenzione di passare questo progetto a Git non appena ha senso.

0

Ecco una risposta alternativa.

Ho copiato e incollato una soluzione con i suoi progetti da una posizione all'altra e non mi viene chiesto di connettermi al controllo del codice sorgente quando provo ad aprirlo nella nuova posizione.

Quando si passa a File-> Controllo origine-> Avanzate-> Cambia controllo origine, non ho l'abilità di separare. Così ho aperto il file della soluzione in un editor di testo e rimosso la seguente sezione:

GlobalSection(TeamFoundationVersionControl) = preSolution 
.... 
EndGlobalSection 

Sembra funzionare; Spero che aiuti qualcuno.

Problemi correlati