version control & multi-user development€¦ · 6 which version repository apis are available...

5
Mendix Evaluation Guide (https://mendix.com/evaluation-guide) 1/5 Version Control & Multi-User Development URL: https://www.mendix.com/evaluation-guide/app-lifecycle/version-control 1 How Does Mendix Support Multi-User Development? Mendix Studio Pro and Mendix Studio combine multi-user development across different skill levels. Team members can choose Mendix Studio or Mendix Studio Pro, depending on their needs. More information can be found in App Development . At the start of a project, all team members can work together on the main line of the version control repository. Mendix Studio Pro users can share app updates with the rest of the team using the update and commit pattern via the version control repository. All changes made by team members using Mendix Studio will be shared via the version control repository when the Mendix Studio Pro user requests an update from the version control repository. Assigning a dedicated branch for team collaboration using Mendix Studio provides full control over which changes are made in Mendix Studio. For example, when a Business Developer creates a new set of pages and associated assets using Mendix Studio, the new app version can be shared in a branch line. Business users (for example, a Business Analyst) can then use Mendix Studio to review and change the content of app. When finished, the branch can be merged at the request of the Business Developer in Mendix Studio Pro. This provides the developer full control over the model changes. Effectively, this ensures that experienced developers on the the team control which elements are merged back from the branch. For more details, see Collaborative Development in the Mendix Studio Pro Guide. 2 How Does Version Control Work in Mendix? Mendix supports the use of a centralized version control repository based on Subversion (SVN), which is the Mendix Team Server . Every project built using the Mendix Platform comes with the Team Server version control system. The Team Server uses SVN technology and enables multiple developers to work on the same project, continuously merging model changes into revisions held inside the version control repository. This diagram presents the Mendix version control architecture:

Upload: others

Post on 04-Aug-2020

9 views

Category:

Documents


0 download

TRANSCRIPT

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

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

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

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

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

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.