Jak si udělat sestavení, který obsahuje pouze jeden z mnoha nevyřešených změn?




V mém současném prostředí, máme „čistý“ postavit stroj, který má přesnou kopii všech potvrzených změnách, nic víc, nic míň.


A samozřejmě mám svůj vlastní stroj, s desítkami soubory ve stavu „in-progress“.


Často musím postavit mé žádosti s jedinou změnou v místě. Například jsem dokončil úkol ABC, a chci stavět EXE s *jedinou* této změny.


Ale samozřejmě nemohu dopustit změnu k úložišti, dokud je to zkoušet.


Větvení se jeví jako zbytečná pro tento. Co děláte ve svém prostředí izolovat změny na testovací verze a vydání?


@Matt b: Tak na počkání pro zpětnou vazbu na změnu, co děláte? Jsou vždy pracují na přesně jednu věc?
Takže jste se ptali, jak zvládnout práci na násobku „úkolů“ najednou, ne? S výjimkou větvení.


Můžete mít více checkouts ze zdroje na lokálním počítači, suffixing název adresáře s názvem lístku, na kterém pracujete. Jen se ujistěte, aby se změny ve správném adresáři, v závislosti na úkolu ...


Směšování více úkolů v jedné pracovní kopii / commit může být velmi matoucí, zvláště pokud někdo potřebuje, aby svou práci zkontrolovat později.
Ve scénáři, kde mám více sestav souborů (tedy 1 exe a 5 DLL) budu používat jinou verzi souboru pro každého, ale stejný montážní verzi pro všechny z nich, která vám umožní zjistit, které exe každý dll jít s. <p>každý den v naší kanceláři probíhá výměna, která vypadá takto:</p><blockquote> <p>"člověče, miluji jen testy jednotek, právě jsem dokázal provést spoustu změn ve způsobu, jakým něco funguje, a pak jsem byl schopen potvrdit, že jsem nic neporazil opakováním testu ..."</p> </blockquote><p>podrobnosti se mění každý den, ale sentiment se nemění. jednotkové testy a vývoj řízený testem (tdd) mají tolik skrytých a osobních výhod, stejně jako ty zjevné, které vám někdo opravdu nedokáže vysvětlit, dokud to sami neučiní.</p><p>ale ignoruji to, tady je můj pokus!</p><ol> <li> <p>testy jednotek umožňují rychlé změny kódu. víte, že to funguje nyní, protože jste provedli testy, když provedete změny, které musíte provést, musíte testy znovu uvést do provozu. to šetří hodiny.</p> </li> <li> <p>tdd vám pomůže uvědomit si, kdy ukončit kódování. vaše testy vám dávají jistotu, že jste prozatím udělali dost, a mohou přestat vyladit a přejít k další věci.</p> </li> <li> <p>testy a kód spolupracují na dosažení lepšího kódu. váš kód může být špatný/buggy. váš test může být špatný/buggy. v tdd bankujete s pravděpodobností, že <strong>obojí</strong> špatné/buggy nízké. často je to test, který vyžaduje opravu, ale to je stále dobrý výsledek.</p> </li> <li> <p>tdd pomáhá při zácpě při kódování. když budete čelit velké a skličující práci před psaním testů, dostanete se rychle do pohybu.</p> </li> <li> <p>testy jednotek vám pomohou skutečně porozumět designu kódu, na kterém pracujete. místo toho, abyste psali kód, abyste něco udělali, začínáte tím, že nastíníte všechny podmínky, kterým je kód vystaven, a jaké výstupy od toho očekáváte.</p> </li> <li> <p>testy jednotek vám poskytují okamžitou vizuální zpětnou vazbu, všichni jsme rádi pocit všech těch zelených světel, když jsme to udělali. je to velmi uspokojivé. je také mnohem snazší vyzvednout si, kde jste přestali po přerušení, protože vidíte, kam jste se dostali - další červené světlo, které potřebuje opravit.</p> </li> <li> <p>na rozdíl od všeobecného vyznání víry jednotka neznamená psaní dvakrát tolik kódu, nebo kódování pomaleji. je to rychlejší a robustnější než kódování bez testů, jakmile to zvládnete. samotný testovací kód je obvykle relativně triviální a nepřispívá k tomu, co děláte, velkou režii. tohle budeš věřit jen tehdy, když to děláš :)</p> </li> <li> <p>myslím, že to byl fowler, kdo řekl: „nedokonalé testy, které probíhají často, jsou mnohem lepší než perfektní testy, které se nikdy nepíšou“. interpretuji to tak, že mi dovoluji psát testy, kde si myslím, že budou nejužitečnější, i když zbytek mého pokrytí kódem je žalostně neúplný.</p> </li> <li> <p>dobré jednotkové testy mohou pomoci dokumentovat a definovat, co má něco dělat</p> </li> <li> <p>jednotkové testy pomáhají s opakovaným použitím kódu. migrujte svůj kód <strong>a</strong> vaše testy do nového projektu. vylaďte kód, dokud se testy neběží znovu.</p> </li> </ol><p>hodně práce, se kterou se zabývám, se netestuje dobře unit unit (interakce s uživateli webových aplikací atd.), ale přesto jsme všichni testováni v tomto obchodě infikovaní a nejšťastnější, když máme testy svázané. nemohu doporučit přístup dostatečně vysoko.</p> 1. No ale ten autoremove přece napřed vypíše co vše se bude odstraňovat a vyzve tě k odsouhlasení, už tady jsi udělal chybu...2. Autoremove by nikdy nemělo nabídnout k odstranění balíky které jsou k něčemu potřeba, v opačném případě máš ten systém nabořený.3. Takže se stejně reinstalaci nevyhneš. Máš aspoň oddíl /home zvlášť? Můžeš ho zachovat.Proč si systém nezálohuješ? Ušetřil by sis zbytečné reinstalace při každém problému...![](/Client.Images/smileys/6.gif) <p>ano, se 100% pokrytím budete psát několik testů, které nepotřebujete. bohužel jediným spolehlivým způsobem, jak určit, které testy nepotřebujete, je napsat je všechny a poté počkat asi 10 let, abyste zjistili, které z nich nikdy selhaly.</p><p>udržování mnoha testů není obvykle problematické. mnoho týmů má automatizovanou integraci a testy systému na 100% pokrytí testem jednotek.</p><p>nejste však ve fázi údržby testu, hrajete dohání. je mnohem lepší mít 100% vašich kurzů při 50% testovacím pokrytí než 50% vašich kurzů při 100% testovacím pokrytí a zdá se, že váš náskok se snaží přimět vás, abyste odpovídajícím způsobem přidělili svůj čas. poté, co máte tuto základní linii, pak dalším krokem je obvykle tlačení o 100% u souborů, které se v budoucnu změní.</p> Upřímně řečeno, já bych jít s sestavení .NET, jak se zdá být jednodušší řešení a těsněji obsahoval řešení, než zahájit nový proces. Některé z důvodů, proč jsem pocit, že způsob, jakým jsou tyto:


1. S nástrojem příkazového řádku, že jste na trh nový proces. Takže je to zcela samostatný proces ID běh a bude probíhat mimo rozsah a aplikační domény vaší stávající aplikace. Veškerá komunikace mezi aplikací a procesu bude přes hranice procesu a bude muset být provedeno buď s telefonem, jakési sdílené paměti, nebo nějaký jiný přístup, který by mohl být těžkopádný (zejména při řešení otázek).
2. Se zahájením nového procesu, jste v podstatě ztratí kontrolu nad tímto procesem z vaší aplikace. Pokud vaše aplikace zemře nebo se vypne, budete muset tento proces výslovně zabít - jinak budete muset úchyty zůstat otevřené soubory uzamčeny, atd.
3. Včetně sestavení .NET v aplikaci umožňuje vše spustit ve stejném kontextu (obecně), který umožňuje lepší komunikaci mezi složkami, snadnější ladění a odstraňování poruch (obecně), a jediný způsob je řízena.
4. Máte trochu větší kontrolu nad kódu. Zahájení procesu je v podstatě black-box - nemáte ponětí, co se děje uvnitř ní. Je pravda, že se sestavení .NET máte podobný black-box scénář, ale vzhledem k tomu, že je ve stejném procesu, může mít nějaké další vhled do toho, jak jsou hovory byly provedeny, kde jsou výjimky být hozen, atd. V podstatě mít trochu větší vhled do složky s sestavení .NET spíše než zahájit nový proces.


To jsou jen některé myšlenky z vrcholu mé hlavy. Doufám, že to pomůže. Máte-li dotazy, dejte mi vědět a já vám zpracovat mé odpovědi. Hodně štěstí!! Používám ILMerge pro téměř všechny své různých aplikací. Mám ji integrovat přímo do procesu sestavení uvolnění, takže to, co jsem skončit s jedním exe jednu aplikaci s žádné další DLL. 


Nemůžete ILMerge žádnou C ++ sestavy, které mají nativní kód. Také nelze ILMerge jakýchkoli dílů, které obsahují XAML pro WPF (alespoň jsem neměl žádný úspěch s tím). Stěžuje za běhu, že prostředky nelze nalézt.


Udělal jsem napsat obálky spustitelný ILMerge kde jsem se projít ve spouštěcím názvu exe pro projekt chci sloučit, a výstupní název exe, a pak to odráží závislých sestavy a volání ILMerge s příslušnými parametry příkazového řádku. Je to mnohem jednodušší, teď, když jsem přidat nové sestavy projektu, nemám na paměti, aktualizovat build skriptu. "Nevěřící" Tomáši.Pokud takto "skáčeš" mezi verzemi, musíš před instalací další vždy smazat konfiguraci (= nastavení) té předchozí. Pouhá odinstalace nestačí, protože ta "stará" konfigurace tam zůstane a dělá "neplechu"...Svoji konfiguraci programy většinou ukládají buďto do složky v umístení C:/Users/uživatel/AppData/Localnebo v C:/Users/uživatel/AppData/Roaming kterou je nutno po odinstalaci ještě smazat.Nebo do registru windows, což vyhledat (a smazat) je už poněkud obtížnější.Určitým východiskem je pořídit si program typu Revo Unistaller který to dokáže najít a komplet odinstalovat a"vyčistit" sám. Ovšem je třeba daný program už pomocí něho instalovat. Revo si zapíše kam se co instalovalo a pak, pomocí tohoto svého záznamu provede odinstalaci včetně konfigurace a záznamů v registru. Tím pádem se to nemusí hledat ručně...![](/Client.Images/smileys/6.gif) <blockquote> <p>pro mě mám potíže s pokusem o „malé odevzdání“, protože zapomínám nebo vytvářím něco, co vytváří něco jiného, ​​co vytváří něco jiného.</p> </blockquote><p>to je problém. vypadá to, že musíte <em>čit se</em>, abyste rozdělili svou práci na menší, lépe zvládnutelné kousky.</p><p>problém s velkým odevzdáním je:</p><ul> <li>v projektu s více osobami větší šance, že vaše závazky způsobí konflikty, které ostatní vývojáři vyřeší.</li> <li>je těžší přesně popsat, co bylo provedeno ve zprávách protokolu.</li> <li>je obtížnější sledovat pořadí, ve kterém byly provedeny změny, a proto pochopit příčinu problémů.</li> <li>zvyšuje to pravděpodobnost ztráty hodně práce bez závazků.</li> </ul><p>někdy jsou velké závazky nevyhnutelné; např. pokud musíte změnit hlavní api. normálně tomu tak ale není. a pokud se v této situaci ocitnete, je asi dobrý nápad vytvořit pobočku a tam pracovat ... se spoustou malých odevzdání ... a po dokončení se znovu integrovat.</p><p>(jiný případ je, když provedete počáteční import, ale to není problematické z pohledu výše uvedených problémů.)</p> Jeden dotaz ti nestačí?[http://www.zive.cz/poradna/nastaveni-ie/sc-2...](http://www.zive.cz/poradna/nastaveni-ie/sc-20-cq-512713/default.aspx?consultanswers=1) Divné. <p>děláme to úplně na <a href="http://smartystreets.com">smartystreets</a> . uživatelé nahrávají soubory s potenciálně miliony adres v nich a my je ověřujeme a standardizujeme/duplikujeme, atd. je to velmi náročné na procesor a dokonce i s kmenovými daty načtenými na jednotku ram, miliony adres zabere několik hodin (mimochodem, pro tuto částku je to velmi rychlé ...).</p><p>může být také důležité navrhnout uživatelské rozhraní, které může podporovat desítky úloh spuštěných paralelně. například naše serverové uzly se rozšiřují a můžeme podporovat mnoho souborů najednou. uživatelé budou potřebovat efektivní způsob, jak zobrazit stav a spravovat je. v roce 2011 jsme vylepšili naše uživatelské rozhraní a to je to, s čím jsme přišli.</p><hr><p> <a href="http://youtu.be/qdjsolatz4u?hd=1">zde je 30sekundové video</a> ukazující, jak celý proces funguje a jak rozhraní reaguje na aktuální stav úlohy (úloh). pokud chcete, můžete vyzkoušet sami od <a href="http://smartystreets.com/account/create">tato stránka</a> (zdarma, nebojte se ...).</p><hr><p>screenshoty pracovního postupu ... trvá asi 30 sekund až několik minut, v závislosti na vašich souborech.</p><p><img src="https://i.stack.imgur.com/egatr.png" alt="upload list"></p><p><em> nahrajte svůj seznam </em></p><p><img src="https://i.stack.imgur.com/kqkb9.png" alt="see the file uploading"></p><p><em> viz nahrání souboru </em></p><p><img src="https://i.stack.imgur.com/zv26q.png" alt="map the fields"></p><p><em> mapujte pole (probíhá automaticky; stačí potvrdit, že automatická mapa byla správná) </em></p><p><img src="https://i.stack.imgur.com/wodst.png" alt="stay up-to-date with the current status"></p><p><em> zůstaňte v kontaktu s tím, co se nyní děje </em></p><hr><p>všimněte si, že jakmile seznam začne zpracovávat, uživatel se může vrátit a nahrát více, které seznamy budou zpracovány paralelně v reálném čase. seznamy lze kdykoli zrušit/smazat a po dokončení je lze stáhnout. pokud byl seznam stažen alespoň jednou, zobrazí se zaškrtnutí.</p><p>toto je vlastně stárnoucí návrh, který plánujeme upgradovat. bude se to cítit spíš jako moderní, responzivní webová aplikace.</p><p>ještě stojí za zmínku, že jsme mnohokrát změnili vzhled stránky „dashboard“ účtu a tento návrh inicioval nejmenší volání/e-maily podpory a zákazníci to rádi viděli na první pohled. první uživatelé mají tendenci shledávat, že se s ním dostanou docela rychle.</p>