Version Control & Multi-User Development€¦ · 6 Which Version Repository APIs Are Available for...
Transcript of Version Control & Multi-User Development€¦ · 6 Which Version Repository APIs Are Available for...
![Page 1: Version Control & Multi-User Development€¦ · 6 Which Version Repository APIs Are Available for Custom Versioning Integrations? The Mendix versioning functionality is exposed through](https://reader034.fdocuments.in/reader034/viewer/2022050419/5f8f09d5e61fe833141b851a/html5/thumbnails/1.jpg)
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:
![Page 2: Version Control & Multi-User Development€¦ · 6 Which Version Repository APIs Are Available for Custom Versioning Integrations? The Mendix versioning functionality is exposed through](https://reader034.fdocuments.in/reader034/viewer/2022050419/5f8f09d5e61fe833141b851a/html5/thumbnails/2.jpg)
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).
![Page 3: Version Control & Multi-User Development€¦ · 6 Which Version Repository APIs Are Available for Custom Versioning Integrations? The Mendix versioning functionality is exposed through](https://reader034.fdocuments.in/reader034/viewer/2022050419/5f8f09d5e61fe833141b851a/html5/thumbnails/3.jpg)
MendixEvaluationGuide(https://mendix.com/evaluation-guide) 3/5
Fromthesediscussions,newuserstoriescanbecreatedandimplementedinMendixStudioPro.Whenlinkingthemodelcommitstotheuserstory,thefullfeedbackcycleisreadyandalsocross-referenced.
4HowDoIUseMyOwnSVNRepositoryInsteadofMendixTeamServer?NexttothedefaultcentralMendixTeamServerversioningrepository,youcanchoosetoconfigureyourownon-premisesSVNrepositoryinsteadasaversioningrepositoryforyourprojects.
Fordetailsonsetup,seeHowtoWorkwithanOn-PremisesVersionControlServerintheMendixStudioProHow-to's.
5HowDoesMendixSupportBranchingandMerging?
![Page 4: Version Control & Multi-User Development€¦ · 6 Which Version Repository APIs Are Available for Custom Versioning Integrations? The Mendix versioning functionality is exposed through](https://reader034.fdocuments.in/reader034/viewer/2022050419/5f8f09d5e61fe833141b851a/html5/thumbnails/4.jpg)
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?
![Page 5: Version Control & Multi-User Development€¦ · 6 Which Version Repository APIs Are Available for Custom Versioning Integrations? The Mendix versioning functionality is exposed through](https://reader034.fdocuments.in/reader034/viewer/2022050419/5f8f09d5e61fe833141b851a/html5/thumbnails/5.jpg)
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.