version control & multi-user development€¦ · 6 which version repository apis are available...
TRANSCRIPT
MendixEvaluationGuide(https://mendix.com/evaluation-guide) 1/5
VersionControl&Multi-UserDevelopmentURL:https://www.mendix.com/evaluation-guide/app-lifecycle/version-control
1HowDoesMendixSupportMulti-UserDevelopment?MendixStudioProandMendixStudiocombinemulti-userdevelopmentacrossdifferentskilllevels.TeammemberscanchooseMendixStudioorMendixStudioPro,dependingontheirneeds.MoreinformationcanbefoundinAppDevelopment.
Atthestartofaproject,allteammemberscanworktogetheronthemainlineoftheversioncontrolrepository.MendixStudioProuserscanshareappupdateswiththerestoftheteamusingtheupdateandcommitpatternviatheversioncontrolrepository.AllchangesmadebyteammembersusingMendixStudiowillbesharedviatheversioncontrolrepositorywhentheMendixStudioProuserrequestsanupdatefromtheversioncontrolrepository.
AssigningadedicatedbranchforteamcollaborationusingMendixStudioprovidesfullcontroloverwhichchangesaremadeinMendixStudio.
Forexample,whenaBusinessDevelopercreatesanewsetofpagesandassociatedassetsusingMendixStudio,thenewappversioncanbesharedinabranchline.Businessusers(forexample,aBusinessAnalyst)canthenuseMendixStudiotoreviewandchangethecontentofapp.Whenfinished,thebranchcanbemergedattherequestoftheBusinessDeveloperinMendixStudioPro.Thisprovidesthedeveloperfullcontroloverthemodelchanges.Effectively,thisensuresthatexperienceddevelopersonthetheteamcontrolwhichelementsaremergedbackfromthebranch.
Formoredetails,seeCollaborativeDevelopmentintheMendixStudioProGuide.
2HowDoesVersionControlWorkinMendix?MendixsupportstheuseofacentralizedversioncontrolrepositorybasedonSubversion(SVN),whichistheMendixTeamServer.EveryprojectbuiltusingtheMendixPlatformcomeswiththeTeamServerversioncontrolsystem.TheTeamServerusesSVNtechnologyandenablesmultipledeveloperstoworkonthesameproject,continuouslymergingmodelchangesintorevisionsheldinsidetheversioncontrolrepository.
ThisdiagrampresentstheMendixversioncontrolarchitecture:
MendixEvaluationGuide(https://mendix.com/evaluation-guide) 2/5
Developerscanmanagerevisionsandconflictsaswellascreatebranchlines,whichcanbemergedbacktoamainlinebranchasrequired.Everychangeintheplatformisrecordedandcomparedagainstotherrevisionstodetectconflictsandmanageupdates.UsersareinvitedtoappprojectsviatheDeveloperPortalandassignedsecurityroles,whichallowthemappropriateaccessrightstothemodelsheldinTeamServer.
3HowDoICross-ReferenceUserStories&ApplicationChangeCommits?MendixprovidesanintegrateddevelopmentexperiencebetweentheTeamServerversioningrepository,theapplicationProjectDashboard,andMendixStudioandMendixStudioPro.TheintegrationoftheMendixTeamServerversionrepositorywithboththeappProjectDashboardandMendixStudioProhasthefollowingsignificantadvantages:
Itprovidesteammemberswithanintegratedwaytotrackrequirementsthroughoutthewholedevelopmentanddeliverycycle.Whenyoustartworkingonyourapplication,youjustopenMendixStudioProtoseetheuserstoriesplannedforthecurrentSprintandstartworkingonthem.
WhenteammemberscommitappmodelchangestotheTeamServerfromwithinMendixStudioPro,theycanselecttheuserstoriestheyhavebeenworkingon.TheTeamServerwillautomaticallycreatelinksbetweenuserstoriesandthemodelchangesmade,providingawaytonavigatefromcommitstotheassociatedrequirements.
End-userscanprovidefeedbackstraightfromtheuserinterfaceoftheapp,andthisfeedbackcanbetransferredintoauserstory.Asadeveloper,youcandirectlygototheformmentionedinthemetadataofthefeedbackandimplementtherequestedchange.
TeammemberscanstartdiscussionsinMendixStudioandtheappprojectBuzzonimplementedfeatures(forexample,onadashboardpageorbusinesslogicinamicroflow).
MendixEvaluationGuide(https://mendix.com/evaluation-guide) 3/5
Fromthesediscussions,newuserstoriescanbecreatedandimplementedinMendixStudioPro.Whenlinkingthemodelcommitstotheuserstory,thefullfeedbackcycleisreadyandalsocross-referenced.
4HowDoIUseMyOwnSVNRepositoryInsteadofMendixTeamServer?NexttothedefaultcentralMendixTeamServerversioningrepository,youcanchoosetoconfigureyourownon-premisesSVNrepositoryinsteadasaversioningrepositoryforyourprojects.
Fordetailsonsetup,seeHowtoWorkwithanOn-PremisesVersionControlServerintheMendixStudioProHow-to's.
5HowDoesMendixSupportBranchingandMerging?
MendixEvaluationGuide(https://mendix.com/evaluation-guide) 4/5
Adevelopmentprojectalwaysstartswithasingledevelopmentline,whichiscalledthemainline.Thisisthedevelopmentlinethatwillleadwithinthedevelopmentprocess.
Adeploymentfromthemainlinemustcontainallthe(released)functionsoftheapplication.Inadditiontothemainline,aprojectcanhavemultiplebranchlines.Branchesaremadefromaspecificcommit(revision)tothemainlineorabranchline.Creatingabranchmeansthatacopyismadeoftheselectedrevisionthatwillbeusedasthestartingrevisionforthenewdevelopmentline.Thisenablesthedevelopertochangethemodelinanisolatedline.Inmostcases,abranchlineisusedforsolvingissuesinareleasedversionoftheapplicationatthesametimeasongoingdevelopmentcontinuesinthemainline.Thisallowsfornewdevelopmentinthemainlinewithoutthereleaseoffunctionalitythathasnotbeenfinalizedortested.Afteryoucreateabranchandsolvetheissue(orcreateanewlargefeature),itispossibletomergethesechangeswiththemainline.
ThankstoMendix'smodel-drivendevelopmentapproach,mergingmodelstakesplacewithahigherlevelofaccuracythanmergingcode.ThisisbecauseMendixunderstandsthesemanticsofthemodels.Thisresultsinfewerconflicts,andifconflictsdoarise,theycanberesolvedinMendixStudioProthroughtheconsistencycheckingmechanismsdescribedabove.
MendixsupportscreatingandmergingbranchesintheMendixTeamServerversioningrepository.Nexttothis,itispossibletotagspecificrevisionswithareleaselabel.Thisallowsteamstouseindustrypatterns,likereleasebranchesandfeaturebranches.Bydefault,theMendixdeploymentpipelinesalsouserevisiontaggingtolabelversionrevisionswithspecificdeploymentpipelinemoments.Thiscanbeusedforauditingandversionrollbackpurposes.
ThisvideoshowshowyoucanmanagebranchlinesinMendixStudioPro:
VIDEO
Andthisvideopresentshowyoucanmergechanges:
VIDEO
6WhichVersionRepositoryAPIsAreAvailableforCustomVersioningIntegrations?TheMendixversioningfunctionalityisexposedthroughanAPIintheTeamServerrepositorysothatitcanbecalledbyotherplatformservicesorexternalapplications.Forexample,agetlatestcommitcalltotheTeamServerversioningrepositoryAPIforanappprojectwillreturnthelatestrevisionoftheartifactsfortheproject.
7HowDoesMendixSupportVersionDiffing?MendixStudioProhasbuilt-indiffingsupportontheapplicationmodel.Thismeansthatwhenthedeveloperretrieveschangesfromtheversioningrepositoryforalltheappdocuments(likepages,microflows,andintegrations),bothversionsarecompared.MendixStudioProchecksthattherearenoconflictingchangesandthenautomaticallymergesthetwoversions.Theresultingchangescanalwaysbereviewedbeforecommittingthelatestversiontotheversioningrepositoryagain.Thedeveloperhasfullcontroloftheprocess.
Whenthechangesresultinaconflict(forexample,youchangeapagewhichhadbeendeletedbyanotherdeveloper),MendixStudioProwillprovidefeedbackthatthisconflicthastoberesolvedfirst.Formoreinformationaboutconflictresolutioncapabilities,seethesectionWhatAretheConflictResolutionCapabilitiesinMendixStudioPro?below.
8HowCanIReviewChangesMadebyOtherDevelopersAfterPerforminganUpdate?
MendixEvaluationGuide(https://mendix.com/evaluation-guide) 5/5
WhenretrievingnewupdatesfromtheMendixTeamServerinMendixStudioPro,thedeveloperhasfullcontroloverwhichchangestoacceptorrevert.Aftertheupdate,allthechangesaremergedintothelocalmodel.WhenthereisamergeconflictbetweenthechangesmadebythedeveloperandtheupdatefromtheMendixTeamServer,thedeveloperreceivesanoverviewofallthemergeconflicts.ThisinformationcanbeusedtodeterminewhetherthelocalchangeshouldbeusedorthechangefromtheTeamServer.
Atalltimes,thedeveloperisincontrolofwhichchangesandmergeconflictsareaccepted.ChangescanberevertedtotheoriginalversionbeforecommittingthefinalversiontotheTeamServeragain.
9WhatAretheConflictResolutionsCapabilitiesinMendixStudioPro?MendixStudioProsupportsconflictresolutionbyshowingdetailedinformationaboutwhatthedifferencesbetweentwoversionsofadocumentare(forexample,whenyoueditalistonapage,thensomeoneelsefromtheteamdeletesthelistfromthatpage).Whenadocumentismarkedasconflicted,youcanseethereasonfortheconflictinMendixStudioPro.Basedonthisdetailedinformation,youcanresolvetheconflictbychoosing"myversion"or"theirversion"ofthedocument.
Inadditiontodocument-relatedconflicts,MendixStudioProcanalsohandleconflictsattheleveloftheproject.Youcanresolveaprojectconflictbychoosing"myversion"orbydeletingthedocumentsorfoldersinvolved.
Herearetwoexamples:
OnedeveloperdeletesadocumentandanothermakesachangeinsidethatdocumentBothdevelopersmoveadocument,buttheymoveittodifferentplacesintheprojecttree
Ifawholefolder(ormodule)wasdeletedandanotherdeveloperchangesadocumentinsidethatfolder,thefolderisrestoredlocallyandalsomarkedasconflicted.Thiswayyouknowthattheintentionwastodeletethatfolder,butitwasrestoredtoshowthecontextofthechangeddocument.
10HowCanIResolveConflictsinExternalFileslikeJavaClasses,Widgets&Images?Bydefault,MendixStudioandMendixStudioProalsoperformadiffcomparisononexternalfileslikeJavaclasses.Whentherearenewversionsorfileshavebeendeleted,thisisdirectlyhandledbyMendixStudioProitself.
Foradditionaldiffingorconflictresolutiononexternalfiles,externalSVNtoolslikeTortoiseSVNcanbeused.