it-swarm-eu.dev

Mohu unshelve do jiné pobočky v tfs 2008?

Předpokládejme, že nějaký vývojář v mém týmu odložil své změny, které udělal v oboru A. A já pracuji na pobočce B. Mohu své změny změnit v pobočce B? (Pomocí grafického uživatelského rozhraní nebo příkazového řádku) 

104
spinodal

Nástroje Visual Studio Power Tools by vám to měly umožnit.

C:\src\2\Merlin\Main>tfpt unshelve /?
tfpt unshelve - Unshelve into workspace with pending changes

Allows a shelveset to be unshelved into a workspace with pending changes.
Merges content between local and shelved changes. Allows migration of shelved
changes from one branch into another by rewriting server paths.

Usage: tfpt unshelve [shelvesetname[;username]] [/nobackup]
                     [/migrate /source:serverpath /target:serverpath]

 shelvesetname          The name of the shelveset to unshelve
 /nobackup              Skip the creation of a backup shelveset
 /migrate               Rewrite the server paths of the shelved items
                        (for example to unshelve into another branch)
 /source:serverpath     Source location for path rewrite (supply with /migrate)
 /target:serverpath     Target location for path rewrite (supply with /migrate)
 /nobackup              Skip the creation of a backup shelveset

Chcete-li například sloučit sadu shelve nazvanou "Název sady šablon" vytvořenou v oboru Branch1 až Branch2, použijte toto:

>tfpt unshelve "Shelve Set Name";domain\userName /migrate /source:"$/Project/Branch1/" /target:"$/Project/Branch2/"
128
Curt Hagenlocher

Alternativní řešení tfpt, které zamezí nutnosti sloučit každý soubor ručně

Problém s tfs nástrojem je, že děláte 'bezdůvodné sloučení', takže musíte potvrdit každý soubor . Měl jsem shelveset přes 800 souborů a já nikdy nedůvěřuji 'auto merge' tlačítko a nechtěl jít přes každý soubor zase - tak jsem musel najít jinou cestu!

  • Stáhněte a nainstalujte TFS Shelveset Sidekick
  • Nástroj se zobrazí pod položkou „Nástroje“ ve VS2010
  • Spusťte nástroj 'Shelveset Sidekick', kliknutím na tlačítko Hledat zobrazte police
  • Klikněte pravým tlačítkem myši na vaši polici a vyberte možnost Exportovat police
  • Uložit do prázdného místa, jako je C:\temp\shelveset-name
  • Nyní máte kompletní adresářovou strukturu obsahující JUST nové soubory 

(Poznámka: Při exportu není žádný indikátor průběhu, takže pokud máte velký regál, který trvá dlouho, než budete exportovat, budete muset pouze zkontrolovat v Průzkumníku Windows (Soubor> Vlastnosti> Velikost), že soubory stále přicházejí, pokud myslím, že je to zmrazené).

Nyní je musíte zkopírovat do nové větve pomocí Průzkumníka Windows.

To fungovalo pro mě:

  • Nejprve si zkontrolujte celé řešení (v nové pobočce)
  • Uzavřete toto řešení
  • Vezměte TFS offline z VS ( Nástroj, jak to udělat ) - viz níže, proč je to důležité ...
  • Kopírování souborů přes Průzkumník Windows. Struktura adresářů v souboru c:\temp\shelveset-name bude muset být přejmenována tak, aby odpovídala nové větvi. Tip: Ujistěte se, že kopírujete na správné místo !!!
  • Přineste VS online
  • Měla by najít všechny změny a přidat nové soubory
  • Pokud vás požádá, abyste svázali sourcecontrol, ujistěte se, že je cesta správná pro novou větev.
  • Test - a poté zaškrtněte nové soubory

Důležité: Zjistili jsme, že pokud neprohlásíte TFS v režimu offline, skončíte s novými soubory (z vaší sady změn), které budou zobrazeny bez červeného zaškrtnutí a budete je muset znovu vyloučit a zahrnout. aby je přidali. Pokud má někdo jiné řešení tohoto problému, rád bych věděl, že to nefunguje.

34
Simon_Weaver

Informace o polici obsahují specifickou cestu, do které směřuje. Bohužel nevím o žádné automatické cestě do unshelve do jakéhokoli jiného místa, než do kterého byl odložen. Časy, které jsem chtěl udělat, jsem musel zkontrolovat ekvivalentní soubory v nové větvi, unshelve ze staré větve, a pak soubory ručně zkopírovat.

EDIT: No, myslím, že jsem to dělal tvrdě. Musím si vyzkoušet Curtovo řešení. :)

1
Herms

Strávil jsem spoustu času, abych to udělal, a měl jsem jen málo problémů, které jsem překonal. Je možné, ale zde je několik otázek a málo pravidel, které by se měly řídit těmito otázkami 

Chyba:

nelze určit pracovní prostor

Tento problém byl vyřešen spuštěním příkazu z source branch root folder. To je v rozporu s některými odpověďmi na SO, kde říkají, že používají "cílovou" větev - ne, používají "zdroj":

cd [your !!source!! branch root]
tfpt unshelve /migrate /source:"$/MyCollection/Development/Maint1.1" /target:"$/MyCollection/Development/Maint1.2" "myShelveset;UserName"

Druhý problém se objevil po tomto. Zdá se, že se nemohl připojit k serveru TFS. Uvědomil jsem si, že mám více VS nainstalovaných a připojených k různým TFS serverům. Byl jsem pomocí VS12 a měl jsem pracovní prostor a připojení k serveru. Ale neuvědomil jsem si, že stejné spojení musí být replikováno ve VS13, aby TFPT2013 fungoval. Připojuje se ke stejnému serveru a pracovnímu prostoru.

Také jsem se snažil dělat to pomocí TFPT2015, ale nainstaloval jsem to a to nenainstaloval TFPT.exe proto to bylo k ničemu. Tak jsem se snažil z TFPT2013 na TFS2015 a fungovalo to pro tento konkrétní příkaz. Zajímalo by mě, proč ne, pokud VS12/13 funguje proti TFS2015?

Shrnout

  • Použijte CMD nebo DevCMD - nezáleží na tom
  • spustit příkaz z source branch root folder
  • ověřte připojení Team Explorer Server pro konkrétní VS
  • TF Power Tools 2013 pracuje proti TFS v15, alespoň volba migrate funguje
0
T.S.