Název projektu: AnkhSVN

Domovská stránka projektu: http://ankhsvn.open.collab.net/

Zadání

AnkhSVN je integrace SVN do visual studia. Jeji jedina konkurence je komercni a placeny visualSVN plugin. Bohuzel tortoise neni prilis stabilni a proto bych chtel celkove zvysit stabilitu tohoto doplnku tak, aby nebyli vyvojari nuceni platit za visualSVN. Ankh svn ma mnoho otevrenych issues tykajicich se stability a také má mnoho issues, které nejsou nahlášeny.

Odkaz na issue Tracker: http://ankhsvn.open.collab.net/issues

Založil jsem stability issue, který jsem našel (#708). Jedná se například o velice častou situaci, kdy je přidán nějaký soubor do verzovacího systému, ale změna ještě není commitnutá. Server tedy ví o souboru, že již existuje ale ještě nezná jeho obsah. V tuto chvíli když na tomto souboru někdo zavolá nějakou serverovou operaci AnkhSVN vyhodí vyjímku, která je ošetřena až nějakým global mechanismem a následně se OBČAS chová nějak podivně (nefungující tlačítka atd.). Tato situace nastává ve chvílích, kdy například zavoláme diff nad celou solution, nebo v případě mylného výběru tohoto souboru při výběru více položek.

AnkhSVN používá pro komunikaci s SVN knihovnu SharpSVN, která není součástí tohoto open source projektu. Tato chyba nastává už v této používané knihovně, je však možné tuto chybu ošetřit i na straně Ankh, kdy se zkontroluje před zavoláním těchto serverových operací, zda se nejedná o soubor, který byl přidán ale necommitnut.

Další řešenou issue je issue číslo #707, které se týká nemožnosti psát zprávu přes dialogové okno. Tato issue se vyskytuje velice nepravidelně. Tato chyba se vyskytla a já jsem se jí pokusil nějak opravit. Bohužel řešení této chyby neuznali, protože celý dialogový systém se aktuálně předělává kvůli VS 2011. Pro opravení této chyby stačilo vždy při konstruování tohoto okna zavolat focus do okna se zprávou. Přesný důvod této chyby se mi však nepodařilo vypátrat. Tato chyba se v issues vyskytovala velice často a #707 je posledním výskytem této chyby.

Issues jsou založeny na adrese:

http://ankhsvn.open.collab.net/issues/show_bug.cgi?id=708

http://ankhsvn.open.collab.net/issues/show_bug.cgi?id=707

Celou opravu jsem poslal podle pravidel popsaných na adrese:

http://ankhsvn.open.collab.net/servlets/ProjectProcess?documentContainer=c5__How%20to%20submit%20a%20patch


Odkazy na mou komunikaci s vývojáři

mudrama1@fel.cvut.cz

12.4. komu: dev [[[ Fix issue #708/707: Dont crash when try to perform uniffiedDiff, Annotation and Lock operations on added and uncommited ]]]


Best regards Martin Mudra

PatchForUncommitedFilesDiffAnotationLockOperations.patch 9 kB Stáhnout

Bert Huijben bert@qqmail.nl

13.4. Hi Martin,

I committed slightly tweaked portions of your patch in r11156, r11157 and r11158.

Somehow your patch was broken by the mailing list software. (There are blank lines between all the useful lines).

Annotate: I used an SvnItem.HasCopyableHistory check instead of added, to allow the command to keep working on copied files. (The root of a copy is also .IsAdded) I applied the check in the update and execute handler to just disable the command where it doesn’t work instead of showing an error dialog. (Another bug fixed was that it checked for .IsVersionable when fetching a targets list) I also fixed a TODO: Save the file if annotating against the working revision.

Unified Diff: Unified diff does work on added files, but it didn’t work on files that had the change status ‘New’. I fixed this by applying the ‘New’ status directly here. To avoid further errors I disabled the exceptions from the diff handler and write the error to the patch file instead.

Lock: Same as annotate: I applied the fix to the selection filter instead of to the dialog processing to avoid showing UI that doesn’t work instead of showing errors. (Also: fixed a missing resource reference)

Thanks for your patch!, Bert


scrumtraining@collab.net

Certified ScrumMaster Training coming to Zurich, Switzerland For a Limited Time: One Third Off Enrollment! Hi Martin,

Do you want to be an Agile genius? Learn from the experts - CollabNet. CollabNet has more Certified Scrum trainers on staff than anyone, so you know you’ll be on the path to success.

Our Certified ScrumMaster training is perfect for all your team members – ScrumMasters, Product Owners, project managers, developers, testers, and architects will all benefit from the practical, hands-on exercises and small group discussions. You will leave with a thorough understanding of Agile and a clear plan to put it to work to optimize your team’s performance!

To encourage Agile adoption across your organization, CollabNet is offering 33% off enrollment. Forward this invitation to anyone who wants to deliver quality projects and products faster.

Our next Certified ScrumMaster Training will be held in Zurich 24-25 May. This is the only CollabNet Certified ScrumMaster training in Zurich until winter of this year, so don’t miss out! Click here to registerr.

In addition to meeting the Scrum Alliance certification requirements, this CSM course provides 14 PMI PDUs and a 2 year membership to the Scrum Alliance.

If you have any questions about this class, or about private consulting or coaching, please contact us at scrumtraining@collab.net.

Best Regards,

The CollabNet Team scrumtraining@collab.net


Odkaz na repozitář


Odkazy na mé commity v repozitáři projektu

použitá subversion nepodporuje přímé odkazy na revize. Commitnuté revize jsou:

r11158:

Disable the lock command on new, replaced and copied files.

r11157:

Add status ‘New’ files from the unified diff handler to allow showing them in the diff result. Instead of failing on errors add a comment line to the diff that shows what error occured.

r11156:

Don’t try to annotate new files and save documents before annotating to the working revision.

Dokumentace

Jedná se o stability issues programu, dokumentace oprav je přítomná v issuetrackeru a samotné opravy v kódu. Ukázky:

1

...added)//For this command server must know object, when it is not commited it doesnt make sense to use this...

2

...
/// <summary>
///   Looks up a localized string similar to Item &apos;{0}&apos; is not commited. Perform commit operation on this file first..
/// </summary>
internal static string TargetNotAdded {
get {return ResourceManager.GetString("TargetNotAdded", resourceCulture);}}
...

Prezentace

Ohloh

Ohloh profile for LightCZ