GitHub vs GitLab - GitLab | GitLab · Lock Discussion Lock down continued discussion in an issue or...

Post on 30-May-2020

80 views 0 download

Transcript of GitHub vs GitLab - GitLab | GitLab · Lock Discussion Lock down continued discussion in an issue or...

GitHubvsGitLabGitLabcomparedtootherDevOpstools

Onthispage

Summary

Comments/Anecdotes

Resources

FAQs

Comparison

Summary

(drawnfromhttps://en.wikipedia.org/wiki/GitHub)

GitHubisacollaborativecoderepositorytohostandreviewcode,manageprojectsandbuildsoftware.Itoffersallofthedistributedversioncontrolandsourcecodemanagement(SCM)functionalityofGitaswellasaddingitsownfeatures.Itprovidesaccesscontrolandseveralcollaborationfeaturessuchasbugtracking,featurerequests,taskmanagement,andwikisforeveryproject.

CI/CDisaccomplishedviaintegrationswithotherproducts,whileGitLabhasintegratedCI/CD.Incontrast,GitHubalsooffersapplicationperformanceandservermonitoringalongwithcycleanalytics.GitLabincludesstaticanddynamicsecuritytestingandcontainerscanning.

GitHuboffersplansforbothprivaterepositoriesandfreeaccountswhicharecommonlyusedtohostopen-sourcesoftwareprojects.AsofJune2018,GitHubreportshavingover28millionusersand57millionrepositories(including28millionpublicrepositories),makingitthelargesthostofsourcecodeintheworld.

OnJune4,2018,MicrosoftannouncedithadreachedanagreementtoacquireGitHubforUS$7.5billion.Thepurchaseisexpectedtoclosebytheendoftheyear.

GitHubaisalsoofferedinaself-managedversioncalledGitHubEnterprise(GHE).

Comments/Anecdotes

FeedbackfromcustomersisthatGitHubEnterprise(GHE)hastroublescalling.Itseemslikeanyonenearing2kusersstartstorunintoissues.GitLabisenterpriseclassandscalesto>32Kusers.

2018-09-10-GitHubannouncesthatMicrosoftAzurePipelinesareavailableintheGitHubMarketplace.ThisisinparallelwithMicrosoft(whorecentlyacquiredGitHub)announcingtheirAzureDevOps(rebrandedVSTS/TFS).Related?Yes!

2018-09-10-MicrosoftannouncestheadditionofGitHubPullRequestsintegrateddirectlyintoVisualStudioCode.VisualStudioCodeisMicrosoft'slightweight(butstillnotwebbased)codeeditor.

Resources

GitHubWebsite

FAQs

DistributionarchitectureQ:IsGHEisbasedonaclosedVMA:Yes-https://help.github.com/enterprise/2.13/admin/guides/installation/“GitHubEnterpriseisdistributedasavirtualmachineimagethatyouinstallandmanagewithinyourexistinginfrastructure.â€

PossibledisadvantagesofaclosedVM:

Q:aclosedenvironment(couldbeatrojaninside!)A:Agreewithassessment

Q:InstallationisquitecomplicatedA:DISAGREE-singleVMmakesiteasytoinstall,althoughlessflexibleSeeinstallationinstructionsathttps://help.github.com/enterprise/2.13/admin/guides/installation/setting-up-a-github-enterprise-instance/

Q:upgradesandpatchingiscomplicatedA:DISAGREE-VMappliancemakespatchingandupgradingrelativelysimple.Seeupgradeinstructionsathttps://help.github.com/enterprise/2.13/admin/guides/installation/upgrading-github-enterprise/

Q:badthingoffmyheadforusingVMisI/OA:Notclear-Ingeneralyes.ButthingscanbetunedtoimproveitalotSeehttps://academic.oup.com/comjnl/article/61/6/808/4259797forgeneralrecentstudyonthis.

Q:probablycan'tseparatetheinstallationtoseparatedparts(inordertoimproveperformance)A:DISAGREE-CanhaveVMactasdifferentpartstoscaleperrequirements.Seehttps://help.github.com/enterprise/2.13/admin/guides/clustering/about-cluster-nodes/#cluster-design-recommendationsandhttps://help.github.com/enterprise/2.13/admin/guides/clustering/initializing-the-cluster/formoredetails.

Comparison

FEATURES

FreeCI/CDwithsharedorpersonalRunners

GitLab.comhassharedRunnersthatallowyoutouseGitLabCI/CDcompletelyfreeupto2000buildminutesforprivateprojectsandunlimitedforpublicprojects.Alternatively,youcansetupyourownRunnerforfasterbuildprocessing,unlimitedbuildminutes,orspecialrequirements.

ExploreGitLab.comofferings

Built-inCI/CD

GitLabhasbuilt-inContinuousIntegration/ContinuousDelivery,forfree,noneedtoinstallitseparately.Useittobuild,test,anddeployyourwebsite(GitLabPages)orwebapp.Thejobresultsaredisplayedonmergerequestsforeasyaccess.

LearnmoreaboutCI/CD

Innersourcing

InternalprojectsinGitLaballowyoutopromoteinnersourcingofyourinternalrepositories.

Findoutmoreaboutinnersourcing

Commitgraphandreportingtools

GitLabprovidescommitgraphsandreportingtoolsaboutcollaborators'work.

Learnmoreaboutcommitgraphs

GroupMilestones

Createandmanagemilestonesacrossprojects,toworktowardsatargetdatefromthegrouplevel.Viewalltheissuesforthemilestoneyou’recurrentlyworkingonacrossmultipleprojects.

LearnmoreaboutGroupMilestones

Availability

GitLab.comisat99.5%availabilitywhilewewanttobeabove99.95%.We'rehiringtoimprovethisinthelasttwomonthsof2017andin2018.

GitLab.comstatus

Themostcomprehensiveimportfeatureset

GitLabcanimportprojectsandissuesfrommoresources(GitHub,BitBucket,GoogleCode,FogBugz,GiteaandfromanygitURL)thanGitHuboranyotherVCS.WeevenhaveyoucoveredforyourmovefromSVNtoGitwithcomprehensiveguidesanddocumentation.

MakingiteasiertogetupandrunningwithGitLab

Exportprojects

GitLaballowsyoutoexportyourprojecttoothersystems.

Wedon'trestrictaccesstoyourdata

PowerfulIssueTracker

Quicklysetthestatus,assigneeormilestoneformultipleissuesatthesametimeoreasilyfilterthemonanyproperties.Seemilestonesandissuesacrossprojects.

LearnmoreabouttheIssueTracker

IssueBoards

GitLabhasIssueBoards,eachlistofanIssueBoardisbasedonalabelthatexistsinyourissuetracker.TheIssueBoardwillthereforematchthestateofyourissuetrackerinauser-friendlyway.

LearnmoreaboutGitLabIssueBoards

BurndownCharts

GitLabprovidesBurndownChartsaspartofMilestones.Thisallowsuserstobettertrackprogressduringasprintorwhileworkingonanewversionoftheirsoftware.

ReadourBurndownChartDocumentation

IssueWeights

GitLabletsyoumanageissuesusingAgilepracticesbysettingtheweightofanissue.

ReadourIssueWeightsdocumentation

Relatedissues

Explicitlymarkissuesasrelatedandtracktheirstatus.

LearnmoreaboutRelatedIssues

Multipleassigneesforissues

Assignmorethanonepersontoanissueatatime.

ReadourMultipleAssigneesDocumentation

Timetracking

TimeTrackinginGitLabletsyourteamaddestimatesandrecordtimespentonissuesandmergerequests.

LearnmoreaboutTimeTracking

Wikibasedprojectdocumentation

AseparatesystemfordocumentationcalledWiki,isbuiltrightintoeachGitLabproject.EveryWikiisaseparateGitrepository.

LearnmoreaboutGitLabWikis

Duedatesforindividualissues

InGitLab,youcansetaduedateforindividualissues.Thisisveryconvenientifyouhavesmalltaskswithaspecificdeadline.

Duedatesdocumentation

Moveissuesbetweenprojects

YoucanmoveissuesbetweenprojectsinGitLab.Alllinks,historyandcommentswillbecopiedandtheoriginalissuewillreferencethenewlymovedissue.Thismakesworkingwithmultipleissuetrackersmucheasier.

Learnmoreaboutmovingissuesbetweenprojects

Createnewbranchesfromissues

InGitLab,youcanquicklycreateanewbranchfromanissueontheissuetracker.Itwillincludetheissuenumberandtitleautomatically,makingiteasytotrackwhichbranchbelongstowhichissue.

Seehowinourdocumentation

Alloweditsfromupstreammaintainersinbranch

Whenauseropensamergerequestfromafork,theyaregiventheoptiontoallowupstreammaintainerstocollaboratewiththemonthesourcebranch.Thisallowsthemaintainersoftheupstreamprojecttomakesmallfixesorrebasebranchesbeforemerging,reducingthebackandforthofacceptingcommunitycontributions.

Applicationperformancemonitoring

GitLabcollectsanddisplaysperformancemetricsfordeployedapps,leveragingPrometheus.Developerscandeterminetheimpactofamergeandkeepaneyeontheirproductionsystems,withoutleavingGitLab.

Learnmoreaboutmonitoringdeployedapps

Applicationperformancealerts

GitLaballowsengineerstoseamlesslycreateservicelevelindicatoralertsandbenotifiedofanydesiredevents,allwithinthesameworkflowwheretheywritetheircode.

LearnmoreaboutcreatingSLIalerts

GitLabservermonitoring

GitLabcomesoutoftheboxenabledforPrometheusmonitoringwithextensiveinstrumentation,makingiteasytoensureyourGitLabdeploymentisresponsiveandhealthy.

LearnmoreaboutmonitoringtheGitLabservice

CycleAnalytics

GitLabprovidesadashboardthatletsteamsmeasurethetimeittakestogofromplanningtomonitoring.GitLabcanprovidethisdatabecauseithasallthetoolsbuilt-in:fromtheidea,totheCI,tocodereview,todeploytoproduction.

LearnmoreaboutCycleAnalytics

Quickactions

GitLabprovidesaconvenientwaytochangemetadataofanissueormergerequestwithoutleavingthecommentfieldwithslashcommands.

Documentationaboutquickactions

ImageDiscussions

Withinacommitvieworamergerequestdiffview,andwithrespecttoaspecificlocationofanimage,youcanhavearesolvablediscussion.Havemultiplediscussionsspecifyingdifferentareasofanimage.

ImageDiscussions

MergeRequestCommitDiscussions

Commentonacommitwithinthecontextofamergerequestitself

MergeRequestCommitDiscussions

LockDiscussion

LockdowncontinueddiscussioninanissueormergerequestasaMasterroleorhigher,topreventfurtherabuse,spam,orunproductivecollaboration.

LockDiscussion

Draganddroptasks

YoucanchangetheorderoftasksinmarkdownonGitHub.GitLabdoesnothavethisability,butisconsideringimplementingit.

SeetheGitLabissuetoimplementthis

Firsttimecontributorbadge

Highlightfirst-timecontributorsinaproject.

SUPPORTfilelink

LinkfromnewissuestoaSUPPORTfile,pointingtosupportresources.

SeetheGitLabissuetoimplementthis

Built-inContainerRegistry

GitLabContainerRegistryisasecureandprivateregistryforDockerimages.ItallowsforeasyuploadanddownloadofimagesfromGitLabCI.ItisfullyintegratedwithGitrepositorymanagement.

DocumentationonContainerRegistry

FullBinaryRepository

Abinaryrepositoryisasoftwarerepositoryforpackages,artifactsandtheircorrespondingmetadata.Itcanbeusedtostorebinaryfilesproducedbyanorganizationitself,suchasproductreleasesandnightlyproductbuilds,orforthirdpartybinarieswhichmustbetreateddifferentlyforbothtechnicalandlegalreasons.

PreviewyourchangeswithReviewApps

WithGitLabCI/CDyoucancreateanewenvironmentforeachoneofyourbranches,speedingupyourdevelopmentprocess.Spinupdynamicenvironmentsforyourmergerequestswiththeabilitytopreviewyourbranchinaliveenvironment.

LearnmoreaboutReviewApps

Newfeatureseverymonth

GitLabisupdatedwithnewfeaturesandimprovementseverymonthonthe22nd.

Oneintegratedtool

Othertoolsrequiretheintegrationofmultiple3rdpartytoolstocompletethesoftwaredevelopmentlifecycle.GitLabhasacompletelyintegratedsolutionthatcoverstheentiredevelopmentlifecycle.

Accesstotheserver

Youhavecompletecontroloftheserver/instance,soyoucaninstalladditionalsoftware(intrusiondetection,performancemonitoring,etc.)andviewlogfilesontheserveritself.GitLab'sadvancedlogsystemmeanseverythinggetsloggedandprovidesyouwitheasyaccesstoawealthoflogfileinformation.

Learnmoreaboutlogging

Runsonmetal

GitLabcanrunonbaremetalserverswhereyoucanhavecontrolofthediskI/O,CPU,RAM,etc.Scalehorizontallywithoutanissue.

ReadaboutthedifferentwaystoinstallGitLab

HighlyAvailablesetups

Formissioncriticalreleases,youcannotafforddowntime.Splityourappservers,database,etc.,intomultipleinstancesandworkinread-onlymodeduringbackups.

MoreinformationonHighAvailability

Runyourownsoftwareonyourinstance

YouarefreetorunyourownsoftwareontheinstancethatGitLabisrunningon.Haveyourownintrusiondetectionsystem?Noproblem.

ReadaboutthedifferentwaystoinstallGitLab

Useyourconfigurationmanagementsoftware

Youcanuseyourchoiceofconfigurationmanagementsoftware,fromPuppet,Chef,Ansibleforquickandstraightforwardimplementation.

ReadaboutthedifferentwaystoinstallGitLab

UsestandardUnixtoolsformaintenanceandmonitoring

Usethetoolsyouknowformonitoringandmaintenance,whetherthey'restandardoryourown.GitLabdoesn'trestrictyou.

ReadaboutthedifferentwaystoinstallGitLab

IPv6ready

BothGitLab.comandGitLabSelf-managessupportIPv6.

ReadthedocsonconfiguringIPv6

AD/LDAPintegration

Syncgroups,manageSSH-keys,managepermissions,authenticationandmore.YoucanmanageanentireGitLabinstancethroughtheLDAP/ADintegration.

MoreinformationaboutAD/LDAPintegration

MultipleLDAP/ADserversupport

LinkmultipleLDAPserverstoGitLabforauthenticationandauthorization

AdvancedLDAPconfiguration

Multipleapprovalsincodereview

InGitLab,toensurestrictcodereview,youcanrequireaspecificnumberofapprovalsonamergerequestbydifferentusersbeforebeingabletomergeit.Youcanundoanapprovalbyremovingitafterthefact.

ApprovalsDocumentation

Easeofmigrationfromotherproviders

GitLabletsyoueasilymigrateallrepos,issuesandmergerequestdatafromyourpreviousprovider.

LearnhowtomigrateyourprojectstoGitLab

ConfidentialIssues

KeepyourinformationsecurewithConfidentialIssues.WithGitLab,youcancreateconfidentialissuesvisibleonlyforprojectmemberswithReporteraccesslevelorabove.

LearnmoreaboutConfidentialIssues

Accesstoandabilitytomodifysourcecode

GitLabEnterpriseEditionispubliclyreadable,meaningyoucanscanormodifythecodetomeetyoursecurityanddevelopmentneeds.Thecodeusedbymostotherprovidersisproprietary,meaningyoucannoteditorviewthesourcecode.

ReadtheGitLabEnterpriseEditionlicense.

AcomprehensiveAPI

GitLabprovidesAPIsformostfeatures,allowingdeveloperstocreatedeeperintegrationswiththeproduct.

ReadourAPIDocumentation

Searchfileswithfuzzyfilefinder

GitLabprovidesawaytosearchafileinyourrepositoryinonekeystroke.

Readaboutthefilefinderinourdocumentation

Fast-forwardmergewithoptiontorebase

Withthissettingattheprojectlevel,youcanensurethatnomergecommitsarecreatedandallmergesarefast-forwarded.Whenafast-forwardmergeisnotpossible,theuserisgiventheoptiontorebase.

Learnmoreaboutrebasebeforemerge

Squashandmerge

Combinecommitsintoonesothatmainbranchhasasimplertofollowandreverthistory.

Learnmoreaboutsquashandmerge

Remoterepositorypushmirroring

Mirrorarepositoryfromyourlocalservertoelsewhere.

Learnmoreaboutrepositorypushmirroring

Remoterepositorypullmirroring

MirrorarepositoryfromaremoteGitservertoyourlocalserver,makingiteasytokeeplocalforksandreplicasuptodate.

Learnmoreaboutrepositorypullmirroring

ExportissuesasCSV

IssuescanbeexportedasCSVfromGitLabandaresenttoyourdefaultnotificationemailasanattachment.

LearnmoreaboutexportingissuesasCSV

Mergerequestapprovals

Whenaprojectrequiresmultiplesign-offs,GitLabEnterpriseEditionenablesyoutomakesureeverymergerequestisapprovedbyoneormorepeople.Mergerequestapprovalsallowyoutosetthenumberofnecessaryapprovalsandpredefinealistofapproversthatwillneedtoapproveeverymergerequestinaproject,andin-turnimproveyourcode’squality.

Learnmoreaboutmergerequestapprovals

Granularuserrolesandflexiblepermissions

Manageaccessandpermissionswithfivedifferentuserrolesandsettingsforexternalusers.Setpermissionsaccordingtopeople'srole,ratherthaneitherreadorwriteaccesstoarepository.Don'tsharethesourcecodewithpeoplethatonlyneedaccesstotheissuetracker.

LearnmoreaboutUserRoles

Todos

WhenauserismentionedinorassignedtoamergerequestitwillbeincludedintheuserTodos,makingthedevelopmentworkflowfasterandeasiertotrack.

LearnmoreaboutTodos

Mergeconflictresolution

PreviewmergeconflictsintheGitLabUIandtellGitwhichversiontouse.

LearnmoreaboutthemergeconflictresolutionUI

Rejectunsignedcommits

GitLabEnterpriseEditionPremiumallowsyoutoenforceGPGsignaturesbyrejectingunsignedcommits.

Readmoreaboutenforcingpushrules

VerifiedCommitter

Verifythatapushonlycontainscommitsbythesameuserperformingthepush.

IndevelopmentforGitLab.Followthislinkformoreinformation.

Navigatetomethod/functioninamergerequestdiff

Whenviewingamergerequestdiff,navigatedirectlytoamethod/functioninachangedfile.

SeetheGitLabissuetoimplementthisfeature

Mergewhenpipelinesucceeds

WhenreviewingamergerequestthatlooksreadytomergebutstillhasoneormoreCI/CDjobsrunning,youcansetittobemergedautomaticallywhenthejobspipelinesucceeds.

LearnmoreaboutMergewhenpipelinesucceeds

RevertspecificcommitsoramergerequestfromtheUI

RevertanycommitorasinglemergerequestfromGitLab'sUI,withaclickofabutton.

LearnhowtorevertacommitoramergerequestfromtheGitLabUI.

Inlinecommentinganddiscussionresolution

Codeortextreviewisfasterandmoreeffectivewithinlinecommentsinmergerequests.Leavecommentsandresolvediscussionsonspecificlinesofcode.InGitLab,MergeRequestinlinecommentsareinterpretedasadiscussion.Youcanconfigureyourprojecttoonlyacceptmergerequestswhenalldiscussionsareresolved.

Learnmoreaboutresolvingdiscussions

Cherry-pickingchanges

Cherry-pickanycommitintheUIbysimplyclickingtheCherry-Pickbuttoninamergedmergerequestoraspecificcommit.

Learnmoreaboutcherrypickingmergerequests

GPGSignedCommits

Signcommitsandprovethatacommitwasperformedbyacertainuser.

ReadmoreaboutGPGsignedcommits

CodeOwners

TheabilitytospecifyCodeOwnersorreviewersintherepository.

GitLab'sissuetoimplementthis

Subgroups:groupswithingroups

Creategroupswithingroupstoeasilymanagelargenumbersofpeopleandprojects.

LearnmoreaboutSubgroups

Containerdebuggingwithanintegratedwebterminal

Easilydebugyourcontainersinanyofyourenvironmentsusingthebuilt-inGitLabWebTerminal.GitLabcanopenaterminalsessiondirectlyfromyourenvironmentifyourapplicationisdeployedonKubernetes.Thisisaverypowerfulfeaturewhereyoucanquicklydebugissueswithoutleavingthecomfortofyourwebbrowser.

Learnmoreaboutthewebterminal

PublishstaticwebsitesforfreewithGitLabPages

GitLabPagesprovidesaneasysystemforhostingstaticsitesusingGitLabrepositoriesandGitLabCI,completewithcustomdomainsandHTTPSsupport.

LearnmoreaboutGitLabPages

Publishyourwebsitefromaprivateprojectforfree

WithGitLabPages,youcancreateaprivaterepositorytoholdyoursitecontent,andkeeponlythepagesource(HTML)availableonline.

VisitGitLabPagesDocumentation.

CustomdomainsforGitLabPages

WithGitLabPageswebsites,youcanuseacustomdomainorsubdomain.

LearnhowtoapplycustomdomainstoGitLabPageswebsites

MultiplecustomdomainsforGitLabPages

GitLabPagesallowsyoutoaddasmanycustomdomains(knownasdomainaliases)pointingtoasinglewebsite.Adomainaliasislikehavingmultiplefrontdoorstoonelocation.

LearnhowtoaddcustomdomainstoyourGitLabPageswebsite

Securecustomdomains(HTTPS)withGitLabPages

InstallaSSL/TLScertificate,atnocost,onawebsitesetupwithacustomdomainservedbyGitLabPages.

LearnhowtoaddanSSL/TLScertificatetoyourGitLabPageswebsite

GitLabPagescustomdomainsverification

Whenaddinganewcustomdomain,usersmustaddanassociatedTXTrecordinordertoverifytheyaretheownerofthedomain.Thatmechanismisusedtopreventusersfromclaimingdomainstheydonotown.

VisitGitLabPagesDocumentation.

GitLabPagessupportallStaticSiteGenerators

WithGitLab,youcanbuildanySSG,andalsochoosespecificSSGs'versionsyouwantyoursitetobuildwith(e.g.Middleman4.1.1).

LearnhowtobuildanySSGwithGitLabPages

GitLabPagesexampleprojects

Choosean[exampleproject](https://gitlab.com/pages)toforkandgetstartedwithGitLabPages.

Watcha3-minvideotutorialonhowtogetstartedwithGitLabPagesbyforkingaproject

GitLabPagessupportsallJekyllplugins

BesidesbuildinganyJekyllversionyouwant,withGitLabPagesyoucanuseallJekyllpluginsavailable.

VisitGitLabPagesDocumentation.

CustomErrorPages(404)forGitLabPages

GitLabPagesallowsyoutocreatecustomerrorpages.

Learnhowtoaddacustom404toGitLabPageswebsites

DeployBoards

GitLabPremiumshipswithDeployBoardsofferingaconsolidatedviewofthecurrenthealthandstatusofeachCI/CDenvironmentrunningonKubernetes.ThestatusofeachpodofyourlatestdeploymentisdisplayedseamlesslywithinGitLabwithouttheneedtoaccessKubernetes.

LearnmoreaboutDeployBoards

Control

Takecontrolofmaintenancedowntime,don'tbeatthemercyofyourhostingprovider.Controlhowandwhereyourcodeisbackedupandstored.

Youdecidewhenyouupgrade

GitLabreleasesanewversioneachmonthandletsyouchoosewhentoupgrade.

LearnhowtoupgradeyourGitLabinstance

Easyupgradeprocess

UsingourofficialLinuxrepositoriesortheofficialDockerimage,upgradingGitLabisabreeze.

LearnhowtoupgradeyourGitLabinstance

Labels

Labelsprovideaneasywaytocategorizeissuesormergerequestsbasedondescriptivetitlesas'bug',or'documentation'.

LearnmoreaboutGitLabLabels

Abilitytoeditallfieldsofamergerequest

GitLabMergeRequestsareeditablebytheauthor,theproject'sownersanduserswithmasteraccess.Everyfieldiseditable,aswellasthetargetbranch.

ReadthroughGitLabMergeRequest'sDocumentation

Automaticallycloseissue(s)whenamergerequestismerged

WithGitLab,youcanusespecifickeywordstocloseoneormoreissuesassoonasamergerequestismerged.

Learnmoreaboutautomaticallyclosingissues

Configurableissueclosingpattern

Defineyourownspecifickeywordstocloseoneormoreissuesassoonasamergerequestismerged.

Learnmoreaboutautomaticallyclosingissues

EnrichedMarkdownsupport

GitLabuses'GitLabFlavoredMarkdown'(GFM).ItextendsthestandardMarkdowninafewsignificantwaystoaddsomeusefulfunctionality.

LearnmoreaboutGitLabFlavoredMarkdown

WorkinProgressmergerequests(WIP)

Preventmergerequestsfromaccidentallybeingacceptedbeforethey'recompletelyreadybymarkingthemasWorkInProgress(WIP).Thisgivesyouallthecodereviewpowerofmergerequests,whileprotectingunfinishedwork.

LearnmoreaboutWIPMRs

Issuesandmergerequeststemplates

ByaddingadescriptiontemplatetoyourMRs,userswhocreateanewissueormergerequestcanselectatemplatetohelpthemtocommunicateeffectively.

LearnmoreaboutGitLabDescriptionTemplates

CustomGitHooks

LeveragethepowerofGitHooksandchainthemtogethertofireoffcustomscriptswhencertainactionsoccurontherepository.IfthecommitisdeclinedoranerroroccursduringtheGithookcheck,theerrormessageofthehookwillbepresentinGitLab'sUI.GitLabsupportsalltypesofhooks.

LearnhowtouseGitHookswithGitLab

Responsive-firstdesign

GitLabisbuiltwitharesponsive-firstdesignapproach.Beitonadesktop,tabletorsmartphone,GitLabisoptimizedtobeviewedforthebestresult.

Communitybased,userscanhelpshapetheproduct

GitLabhasopenissuetrackersforalmostallofitsoperations.FromGitLabitselftoinfrastructureandmarketing,youcanhelpshapetheproduct.

ViewallGitLabcontributors

GitLFS2.0support

Managelargefilessuchasaudio,videoandgraphicsfileswiththehelpofGitLFS.GitLFS2.0filelockingsupporthelpslargeteamsworkwithbinaryassetsandisintegratedwithournativefilelockingfeature.

LearnmoreaboutGitLFSsupportinGitLab

SecurityDashboards

SecurityDashboardreportthelatestsecuritystatusofthedefaultbranchforeachproject

LearnmoreaboutSecurityDashboards

StaticApplicationSecurityTesting

GitLaballowseasilyrunningStaticApplicationSecurityTesting(SAST)inCI/CDpipelines;checkingforvulnerablesourcecodeorwellknownsecuritybugsinthelibrariesthatareincludedbytheapplication.ResultsarethenshownintheMergeRequestandinthePipelineview.Thisfeatureisavailableaspartof[AutoDevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-sast)toprovidesecurity-by-default.

LearnmoreaboutStaticApplicationSecurityTesting

DependencyScanning

GitLabautomaticallydetectswellknownsecuritybugsinthelibrariesthatareincludedbytheapplication,protectingyourapplicationfromvulnerabilitiesthataffectdependenciesthatareuseddynamically.ResultsarethenshownintheMergeRequestandinthePipelineview.Thisfeatureisavailableaspartof[AutoDevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-dependency-scanning)toprovidesecurity-by-default.

LearnmoreaboutDependencyScanning

ContainerScanning

WhenbuildingaDockerimageforyourapplication,GitLabcanrunasecurityscantoensureitdoesnothaveanyknownvulnerabilityintheenvironmentwhereyourcodeisshipped.ResultsarethenshownintheMergeRequestandinthePipelineview.Thisfeatureisavailableaspartof[AutoDevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-container-scanning)toprovidesecurity-by-default.

Learnmoreaboutcontainerscanning

DynamicApplicationSecurityTesting

Onceyourapplicationisonline,GitLaballowsrunningDynamicApplicationSecurityTesting(DAST)inCI/CDpipelines;yourapplicationwillbescannedtoensurethreatslikeXSSorbrokenauthenticationflawsarenotaffectingit.ResultsarethenshownintheMergeRequestandinthePipelineview.Thisfeatureisavailableaspartof[AutoDevOps](https://docs.gitlab.com/ee/topics/autodevops/#auto-sast)toprovidesecurity-by-default.

Learnmoreaboutapplicationsecurityforcontainers

InteractiveApplicationSecurityTesting

[IAST](https://blogs.gartner.com/neil_macdonald/2012/01/30/interactive-application-security-testing/)combineselementsofstaticanddynamicapplicationsecuritytestingmethodstoimprovetheoverallqualityoftheresults.IASTtypicallyusesanagenttoinstrumenttheapplicationtomonitorlibrarycallsandmore.GitLabdoesnotyetofferthisfeature.

RuntimeApplicationSecurityTesting

RASPusesanagenttoinstrumenttheapplicationtomonitorlibrarycallsastheapplicationisrunninginproduction.Unlikeothersecuritytools,RASPcantakeactiontoblockthreatsinreal-time,similartoaWebApplicationFirewallbutfromwithintheapp'sruntimeenvironmentratherthanatthenetworklayer.GitLabdoesnotyetofferthisfeature.

CreateprojectswithGitpush

Pushnewprojectstothedesiredlocationandanewprivateprojectwillautomaticallybecreated.

LearnmoreaboutcreatingProjects

Keeppersonalemailprivate

Useanoreplyemailaddressforyourcommitsinsteadofyourpersonalemailaddressprivate.

SeetheGitLabissuetoimplementthis

KubernetesClusterMonitoring

MonitorkeymetricsofyourconnectedKubernetescluster.

LearnmoreaboutClusterMonitoring

ChatOps

Executecommonactionsdirectlyfromchat,withtheoutputsentbacktothechannel.

LearnmoreaboutChatOps

DeployTokens

Provideread-onlyaccesstospecificrepositoriesorcontainerimagestoexternalinfrastructuresthatneedtoaccessyourdata,forexampletodeployapplicationsonKubernetes.

LearnmoreaboutDeployTokens

ViewKubernetespodlogs

QuicklyandeasilyviewthepodlogsofanappdeployedtoKubernetes.

LearnmoreaboutviewingKubernetespodlogs

Supportsgeolocation-awareDNS

HavingGeoreplicatedserver(s)canmakelocalpullsgomorequickly,butwithoutsupportforGeolocation-awareDNS,developersneedtoreconfiguretheirtoolsmanuallytopointtotheirnearestgeoreplicatedserver.UsersusingGeolocation-awareDNScanbetransparentlydirectedtotheclosestserveravailableandcanaccessrepositorydatafaster.

LearnmoreaboutGitLabGeo

Advancedglobalsearchinstalledasdefaultsearch

AdvancedglobalsearchviaElasticSearchisinstalledandenabledaspartofthecoreinstallationandprovidesthedefaultsearchcapability

LearnmoreaboutGitLabsearch

Groupsdropdowninnavigation

Searchingforagroupisdirectlyavailablebehindalightweightdropdownmenu,removingtheneedtonavigateawayfromyourworkintoaseparateviewwhenyou’relookingforahard-to-remembergroup.

LearnmoreaboutGroups

GitLabFlavoredMarkdownwithCommonMark

GitLabFlavoredMarkdownisnowrenderedusingCommonMark,amodernstandard,fornewMarkdowncontent.

LearnmoreaboutGitLabFlavoredMarkdown

InitializeREADMEonprojectcreation

ArepositorycanbeinitializedwithanexampleREADMEwhencreatinganewproject.Ifthisoptionischecked,aprojectrepositoryisinitializedwithadefaultmasterbranchwhichcanbeclonedrightaway.

LearnmoreaboutProjectcreation

'ContributetoGitLab'link

GitLabCoreandGitLab.comuserscannowfindourGitLabcontributionpagewithahandylink,availablerightawayfromyouruserprofilemenu.

LearnmoreaboutContributingtoGitLab

AllowSAMLassuranceleveltobypass2FA

itisnowpossibletohonortheSAMLprovider'sassurancelevel,allowingtodisablethetwo-factorauthentificationonGitLabsideviaanewSAMLconfigurationoption

LearnmoreaboutSAMLOmniAuthProvider

Managethirdpartyoffers

GitLab11.1introducestheabilitytocontrolthedisplayofthirdpartyoffersintheadministrationarea,providingmorecontroloverthedisplayoftheseoffers

LearnmoreaboutThirdpartyoffers

SeeJUnittestsummariesinmergerequestwidget

GitLaballowsyoutoviewJUnittestresultsfromthemergerequestwidget,givingyouinsightintoqualityimpactsofyourchanges.

LearnmoreaboutJUnittestsummariesinthemergerequestwidget

Userstatusmessage

DefineandshowyourpersonalstatusmessageviaanEmojiandtextmessage,exposedonyourprofilepageandonanycommentandauthorline.

LearnmoreaboutStatusmessages

Privateprofilepage

Incertainsituations,whenprivacyisofconcern,usersmightnotwanttoshowtheiractivity,contributionsandpersonalprojects.Activity-relatedinformationcanbedisabledintheprofilesettings.

LearnmoreaboutPrivateprofiles

Downloadsinglerepositoryfiles

WhenbrowsingthroughprojectrepositoriesonGitLab,havingdirectaccesstosinglefilesisarelevantusecase.A'Download'buttoninthefileviewerallowsyoutodownloadindividualfilesfromtheGitLabUI.

LearnmoreaboutProjectrepositories

Repositorylanguagesonprojectoverview

AcodelanguagesbarontheprojectoverviewshowsallrelevantlanguagestheGitLabrepositoryconsistsof,includingrelativequantity.

LearnmoreaboutProjects

InteractiveWebTerminals

InteractivewebterminalsallowyoutoconnecttoarunningorcompletedKubernetesorShellrunnerjobandmanuallyruncommandstobetterunderstandwhat'shappeninginthesystem.

LearnmoreaboutInteractiveWebTerminals

Customfiletemplates

Definecustom`LICENSE`,`.gitignore`,`Dockerfile`and`.gitlab-ci.yml`templatestomakeconsistencyeasier.

Learnmoreaboutcustomfiletemplates

CodeOwners

AssignCodeOwnerstofilestoindicatetheteammembersresponsibleforcodeinyourprojectusinga`CODEOWNERS`file.

LearnmoreaboutCodeOwners

ProtectedEnvironments

Specifywhichperson,group,oraccountisallowedtodeploytoagivenenvironment,allowingfurtherprotectionandsafetyofsensitiveenvironments.

LearnmoreaboutProtectedEnvironments

MavenRepository

GitLab'sMavenrepositorymakesiteasiertopublishandshareJavalibrariesacrossanorganization,andensuredependenciesaremanagedcorrectly.ItisfullyintegratedwithGitLab,includingauthenticationandauthorization.

DocumentationontheMavenRepository