[{"data":1,"prerenderedAt":1012},["ShallowReactive",2],{"/blog/a-visual-prototype-of-drupal-dot-orgs-integration-with-gitlab":3,"navigation-en-us":228,"banner-en-us":654,"footer-en-us":664,"blog-post-authors-en-us-Tim Lehnen":909,"blog-related-posts-en-us-a-visual-prototype-of-drupal-dot-orgs-integration-with-gitlab":923,"blog-promotions-en-us":948,"next-steps-en-us":1002},{"id":4,"title":5,"authors":6,"body":8,"category":206,"date":207,"description":208,"extension":209,"externalUrl":210,"faq":210,"featured":211,"heroImage":212,"meta":213,"navigation":214,"path":215,"seo":216,"slug":220,"stem":221,"tags":222,"template":226,"updatedDate":210,"__hash__":227},"blogPosts/en-us/blog/a-visual-prototype-of-drupal-dot-orgs-integration-with-gitlab.md","A visual prototype of Drupal.org's GitLab integration",[7],"Tim Lehnen",{"type":9,"value":10,"toc":197},"minimark",[11,33,46,55,60,63,116,119,145,148,151,155,170,173,178,186],[12,13,14,15,21,22,27,28,32],"p",{},"At ",[16,17,20],"a",{"href":18,"rel":19},"https://www.drupaleurope.org",[],"Drupal Europe"," in September, we were very pleased that project founder ",[16,23,26],{"href":24,"rel":25},"https://dri.es",[],"Dries Buytaert"," highlighted a visual prototype of our upcoming integration with GitLab in his keynote. This follows our announcement that we'd be ",[16,29,31],{"href":30},"/blog/drupal-moves-to-gitlab/","moving to GitLab"," back in August.",[34,35,38,39],"figure",{"className":36},[37],"video_container","\n  ",[40,41,45],"iframe",{"src":42,"frameBorder":43,"allowFullScreen":44},"https://www.youtube.com/embed/q06taaJPGDw?rel=0&showinfo=0","0","true"," ",[12,47,48,49,54],{},"This video outlines the migration phases that we discussed ",[16,50,53],{"href":51,"rel":52},"https://www.drupal.org/drupalorg/blog/developer-tools-initiative-part-5-gitlab-partnership",[],"in the announcement of our partnership with GitLab",". Our migration window for Phase 1 is targeted for the first weeks of January, and we hope Phase 2 to be completed shortly in the beginning of 2019.",[56,57,59],"h2",{"id":58},"so-what-has-it-taken-to-get-this-integration-working-between-september-and-now","So what has it taken to get this integration working between September and now?",[12,61,62],{},"Primarily, lots of collaboration with the GitLab team. We've worked with their excellent engineering staff to resolve a number of issues that affect our integration, including:",[64,65,66,74,81,88,95,102,109],"ul",{},[67,68,69],"li",{},[16,70,73],{"href":71,"rel":72},"https://gitlab.com/gitlab-org/gitlab-ce/issues/49850",[],"git merge-base web API",[67,75,76],{},[16,77,80],{"href":78,"rel":79},"https://gitlab.com/gitlab-org/gitlab-ce/issues/50876",[],"Add ability to confirm a user’s email address via \"Add email for user\" API",[67,82,83],{},[16,84,87],{"href":85,"rel":86},"https://gitlab.com/gitlab-org/gitlab-ce/issues/49698",[],"Allow configuration of the display URL for clone instructions",[67,89,90],{},[16,91,94],{"href":92,"rel":93},"https://gitlab.com/gitlab-org/gitlab-ce/issues/24221",[],"Ability to hide User's Email Address from GitLab UI",[67,96,97],{},[16,98,101],{"href":99,"rel":100},"https://gitlab.com/gitlab-org/gitlab-ce/issues/52954",[],"Allow ability for developer role to delete tags",[67,103,104],{},[16,105,108],{"href":106,"rel":107},"https://gitlab.com/gitlab-org/gitaly/issues/1402",[],"Set GL_REPOSITORY in update hooks for API-initiated requests",[67,110,111],{},[16,112,115],{"href":113,"rel":114},"https://gitlab.com/gitlab-org/gitlab-ce/issues/23029",[],"Deduplication of Git objects, reducing disk space of repository forks",[12,117,118],{},"On the Drupal.org side:",[64,120,121,142],{},[67,122,123,124,133,134,141],{},"We've built a ",[16,125,128,132],{"href":126,"rel":127},"https://www.drupal.org/project/versioncontrol_gitlab",[],[129,130,131],"code",{},"versioncontrol_gitlab"," module",", which extends our use of the ",[16,135,138,132],{"href":136,"rel":137},"https://www.drupal.org/project/versioncontrol_git",[],[129,139,140],{},"versioncontrol_git"," to orchestrate our integration.",[67,143,144],{},"We've also been cleaning up our data, to ensure there are no namespace conflicts between existing Drupal projects and users, and the reserved terms used by GitLab.",[12,146,147],{},"We're now in the midst of serious migration testing: testing and re-testing the process in our staging environment, putting load testing in place to stress test our integration, and doing user-validation testing to ensure that the workflows affected by this integration are working as expected.",[12,149,150],{},"All in all, we're thrilled with the progress, and very thankful for GitLab's close collaboration. We're excited to be moving the Drupal project to its next generation tooling soon. Once Phase 1 of our migration is complete, it'll be time for Phase 2 and our community will start seeing some tremendous improvements in efficiency and collaboration.",[56,152,154],{"id":153},"how-can-people-get-involved-in-drupal","How can people get involved in Drupal?",[12,156,157,158,163,164,169],{},"The Drupal community has a comprehensive ",[16,159,162],{"href":160,"rel":161},"https://www.drupal.org/getting-involved-guide",[],"Getting Involved Guide"," that can help individuals find their place in the Drupal community. There are also meetups and conferences around the world that are a great way to start your Drupal journey. In particular, ",[16,165,168],{"href":166,"rel":167},"https://events.drupal.org/seattle2019",[],"DrupalCon will be coming to Seattle from Apr. 8-12, 2019",".",[12,171,172],{},"The Drupal project's motto has always been \"Come for the code, stay for the community\" and 17 years later, that's a sentiment we still believe in.",[174,175,177],"h3",{"id":176},"about-the-guest-author","About the guest author",[12,179,180,181,169],{},"Tim Lehnen is the Executive Director at the ",[16,182,185],{"href":183,"rel":184},"https://www.drupal.org/association",[],"Drupal Association",[12,187,188],{},[189,190,191,192,169],"em",{},"This guest post was originally published ",[16,193,196],{"href":194,"rel":195},"https://www.drupal.org/drupalorg/blog/a-visual-prototype-of-drupalorgs-integration-with-gitlab",[],"on the Drupal blog",{"title":198,"searchDepth":199,"depth":199,"links":200},"",2,[201,202],{"id":58,"depth":199,"text":59},{"id":153,"depth":199,"text":154,"children":203},[204],{"id":176,"depth":205,"text":177},3,"open-source","2018-12-19","Guest author Tim Lehnen shares a visual preview of free and open source platform Drupal's upcoming integration with GitLab.","md",null,false,"https://res.cloudinary.com/about-gitlab-com/image/upload/v1749671386/Blog/Hero%20Images/drupal-cover.png",{},true,"/en-us/blog/a-visual-prototype-of-drupal-dot-orgs-integration-with-gitlab",{"title":5,"description":208,"ogTitle":5,"ogDescription":208,"noIndex":211,"ogImage":212,"ogUrl":217,"ogSiteName":218,"ogType":219,"canonicalUrls":217},"https://about.gitlab.com/blog/a-visual-prototype-of-drupal-dot-orgs-integration-with-gitlab","https://about.gitlab.com","article","a-visual-prototype-of-drupal-dot-orgs-integration-with-gitlab","en-us/blog/a-visual-prototype-of-drupal-dot-orgs-integration-with-gitlab",[223,224,225],"open source","community","integrations","BlogPost","HxfmoS226LAUq-Cx-18l_KWwPMc1GF8qBWx6j97jO_k",{"logo":229,"freeTrial":234,"sales":239,"login":244,"items":249,"search":574,"minimal":605,"duo":624,"switchNav":633,"pricingDeployment":644},{"config":230},{"href":231,"dataGaName":232,"dataGaLocation":233},"/","gitlab logo","header",{"text":235,"config":236},"Get free trial",{"href":237,"dataGaName":238,"dataGaLocation":233},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com&glm_content=default-saas-trial/","free trial",{"text":240,"config":241},"Request a demo",{"href":242,"dataGaName":243,"dataGaLocation":233},"/sales/?contact-topic=request-demo","sales",{"text":245,"config":246},"Sign in",{"href":247,"dataGaName":248,"dataGaLocation":233},"https://gitlab.com/users/sign_in/","sign in",[250,279,379,384,496,552],{"text":251,"config":252,"menu":254},"Platform",{"dataNavLevelOne":253},"platform",{"type":255,"columns":256},"cards",[257,263,271],{"title":251,"description":258,"link":259},"The intelligent orchestration platform for DevSecOps",{"text":260,"config":261},"Explore our Platform",{"href":262,"dataGaName":253,"dataGaLocation":233},"/platform/",{"title":264,"description":265,"link":266},"GitLab Duo Agent Platform","Agentic AI for the entire software lifecycle",{"text":267,"config":268},"Meet GitLab Duo",{"href":269,"dataGaName":270,"dataGaLocation":233},"/gitlab-duo-agent-platform/","gitlab duo agent platform",{"title":272,"description":273,"link":274},"Why GitLab","See the top reasons enterprises choose GitLab",{"text":275,"config":276},"Learn more",{"href":277,"dataGaName":278,"dataGaLocation":233},"/why-gitlab/","why gitlab",{"text":280,"left":214,"config":281,"menu":283},"Product",{"dataNavLevelOne":282},"solutions",{"type":284,"link":285,"columns":289,"feature":358},"lists",{"text":286,"config":287},"View all Solutions",{"href":288,"dataGaName":282,"dataGaLocation":233},"/solutions/",[290,314,337],{"title":291,"description":292,"link":293,"items":298},"Automation","CI/CD and automation to accelerate deployment",{"config":294},{"icon":295,"href":296,"dataGaName":297,"dataGaLocation":233},"AutomatedCodeAlt","/solutions/delivery-automation/","automated software delivery",[299,303,306,310],{"text":300,"config":301},"CI/CD",{"href":302,"dataGaLocation":233,"dataGaName":300},"/solutions/continuous-integration/",{"text":264,"config":304},{"href":269,"dataGaLocation":233,"dataGaName":305},"gitlab duo agent platform - product menu",{"text":307,"config":308},"Source Code Management",{"href":309,"dataGaLocation":233,"dataGaName":307},"/solutions/source-code-management/",{"text":311,"config":312},"Automated Software Delivery",{"href":296,"dataGaLocation":233,"dataGaName":313},"Automated software delivery",{"title":315,"description":316,"link":317,"items":322},"Security","Deliver code faster without compromising security",{"config":318},{"href":319,"dataGaName":320,"dataGaLocation":233,"icon":321},"/solutions/application-security-testing/","security and compliance","ShieldCheckLight",[323,327,332],{"text":324,"config":325},"Application Security Testing",{"href":319,"dataGaName":326,"dataGaLocation":233},"Application security testing",{"text":328,"config":329},"Software Supply Chain Security",{"href":330,"dataGaLocation":233,"dataGaName":331},"/solutions/supply-chain/","Software supply chain security",{"text":333,"config":334},"Software Compliance",{"href":335,"dataGaName":336,"dataGaLocation":233},"/solutions/software-compliance/","software compliance",{"title":338,"link":339,"items":344},"Measurement",{"config":340},{"icon":341,"href":342,"dataGaName":343,"dataGaLocation":233},"DigitalTransformation","/solutions/visibility-measurement/","visibility and measurement",[345,349,353],{"text":346,"config":347},"Visibility & Measurement",{"href":342,"dataGaLocation":233,"dataGaName":348},"Visibility and Measurement",{"text":350,"config":351},"Value Stream Management",{"href":352,"dataGaLocation":233,"dataGaName":350},"/solutions/value-stream-management/",{"text":354,"config":355},"Analytics & Insights",{"href":356,"dataGaLocation":233,"dataGaName":357},"/solutions/analytics-and-insights/","Analytics and insights",{"title":359,"type":284,"items":360},"GitLab for",[361,367,373],{"text":362,"config":363},"Enterprise",{"icon":364,"href":365,"dataGaLocation":233,"dataGaName":366},"Building","/enterprise/","enterprise",{"text":368,"config":369},"Small Business",{"icon":370,"href":371,"dataGaLocation":233,"dataGaName":372},"Work","/small-business/","small business",{"text":374,"config":375},"Public Sector",{"icon":376,"href":377,"dataGaLocation":233,"dataGaName":378},"Organization","/solutions/public-sector/","public sector",{"text":380,"config":381},"Pricing",{"href":382,"dataGaName":383,"dataGaLocation":233,"dataNavLevelOne":383},"/pricing/","pricing",{"text":385,"config":386,"menu":388},"Resources",{"dataNavLevelOne":387},"resources",{"type":284,"link":389,"columns":393,"feature":485},{"text":390,"config":391},"View all resources",{"href":392,"dataGaName":387,"dataGaLocation":233},"/resources/",[394,426,453],{"title":395,"items":396},"Getting started",[397,402,407,412,417,422],{"text":398,"config":399},"Install",{"href":400,"dataGaName":401,"dataGaLocation":233},"/install/","install",{"text":403,"config":404},"Quick start guides",{"href":405,"dataGaName":406,"dataGaLocation":233},"/get-started/","quick setup checklists",{"text":408,"config":409},"Learn",{"href":410,"dataGaLocation":233,"dataGaName":411},"https://university.gitlab.com/","learn",{"text":413,"config":414},"Product documentation",{"href":415,"dataGaName":416,"dataGaLocation":233},"https://docs.gitlab.com/","product documentation",{"text":418,"config":419},"Best practice videos",{"href":420,"dataGaName":421,"dataGaLocation":233},"/getting-started-videos/","best practice videos",{"text":423,"config":424},"Integrations",{"href":425,"dataGaName":225,"dataGaLocation":233},"/integrations/",{"title":427,"items":428},"Discover",[429,434,439,444,448],{"text":430,"config":431},"Customer success stories",{"href":432,"dataGaName":433,"dataGaLocation":233},"/customers/","customer success stories",{"text":435,"config":436},"Blog",{"href":437,"dataGaName":438,"dataGaLocation":233},"/blog/","blog",{"text":440,"config":441},"Demo Hub",{"href":442,"dataGaName":443,"dataGaLocation":233},"/demo-hub/","demo hub",{"text":445,"config":446},"The Source",{"href":447,"dataGaName":438,"dataGaLocation":233},"/the-source/",{"text":449,"config":450},"Remote",{"href":451,"dataGaName":452,"dataGaLocation":233},"https://handbook.gitlab.com/handbook/company/culture/all-remote/","remote",{"title":454,"items":455},"Connect",[456,461,466,470,475,480],{"text":457,"config":458},"GitLab Services",{"href":459,"dataGaName":460,"dataGaLocation":233},"/services/","services",{"text":462,"config":463},"Contribute",{"href":464,"dataGaName":465,"dataGaLocation":233},"https://contributors.gitlab.com","contribute",{"text":467,"config":468},"Community",{"href":469,"dataGaName":224,"dataGaLocation":233},"/community/",{"text":471,"config":472},"Forum",{"href":473,"dataGaName":474,"dataGaLocation":233},"https://forum.gitlab.com/","forum",{"text":476,"config":477},"Events",{"href":478,"dataGaName":479,"dataGaLocation":233},"/events/","events",{"text":481,"config":482},"Partners",{"href":483,"dataGaName":484,"dataGaLocation":233},"/partners/","partners",{"config":486,"title":489,"text":490,"link":491},{"background":487,"textColor":488},"url('https://res.cloudinary.com/about-gitlab-com/image/upload/v1777322348/qpq8yrgn8knii57omj0c.png')","#000","What’s new in GitLab","Stay updated with our latest features and improvements.",{"text":492,"config":493},"Read the latest",{"href":494,"dataGaName":495,"dataGaLocation":233},"/whats-new/","whats new",{"text":497,"config":498,"menu":500},"Company",{"dataNavLevelOne":499},"company",{"type":284,"columns":501},[502],{"items":503},[504,509,515,517,522,527,532,537,542,547],{"text":505,"config":506},"About",{"href":507,"dataGaName":508,"dataGaLocation":233},"/company/","about",{"text":510,"config":511,"footerGa":514},"Jobs",{"href":512,"dataGaName":513,"dataGaLocation":233},"/jobs/","jobs",{"dataGaName":513},{"text":476,"config":516},{"href":478,"dataGaName":479,"dataGaLocation":233},{"text":518,"config":519},"Leadership",{"href":520,"dataGaName":521,"dataGaLocation":233},"/company/team/e-group/","leadership",{"text":523,"config":524},"Handbook",{"href":525,"dataGaName":526,"dataGaLocation":233},"https://handbook.gitlab.com/","handbook",{"text":528,"config":529},"Investor relations",{"href":530,"dataGaName":531,"dataGaLocation":233},"https://ir.gitlab.com/overview/default.aspx","investor relations",{"text":533,"config":534},"Trust Center",{"href":535,"dataGaName":536,"dataGaLocation":233},"/security/","trust center",{"text":538,"config":539},"AI Transparency Center",{"href":540,"dataGaName":541,"dataGaLocation":233},"/ai-transparency-center/","ai transparency center",{"text":543,"config":544},"Newsletter",{"href":545,"dataGaName":546,"dataGaLocation":233},"/company/contact/#contact-forms","newsletter",{"text":548,"config":549},"Press",{"href":550,"dataGaName":551,"dataGaLocation":233},"/press/","press",{"text":553,"config":554,"menu":555},"Contact us",{"dataNavLevelOne":499},{"type":284,"columns":556},[557],{"items":558},[559,564,569],{"text":560,"config":561},"Talk to sales",{"href":562,"dataGaName":563,"dataGaLocation":233},"/sales/","talk to sales",{"text":565,"config":566},"Support portal",{"href":567,"dataGaName":568,"dataGaLocation":233},"https://support.gitlab.com/hc/en-us","support portal",{"text":570,"config":571},"Customer portal",{"href":572,"dataGaName":573,"dataGaLocation":233},"https://customers.gitlab.com/customers/sign_in/","customer portal",{"close":575,"login":576,"suggestions":583},"Close",{"text":577,"link":578},"To search repositories and projects, login to",{"text":579,"config":580},"gitlab.com",{"href":247,"dataGaName":581,"dataGaLocation":582},"search login","search",{"text":584,"default":585},"Suggestions",[586,588,592,594,598,602],{"text":264,"config":587},{"href":269,"dataGaName":264,"dataGaLocation":582},{"text":589,"config":590},"Code Suggestions (AI)",{"href":591,"dataGaName":589,"dataGaLocation":582},"/solutions/code-suggestions/",{"text":300,"config":593},{"href":302,"dataGaName":300,"dataGaLocation":582},{"text":595,"config":596},"GitLab on AWS",{"href":597,"dataGaName":595,"dataGaLocation":582},"/partners/technology-partners/aws/",{"text":599,"config":600},"GitLab on Google Cloud",{"href":601,"dataGaName":599,"dataGaLocation":582},"/partners/technology-partners/google-cloud-platform/",{"text":603,"config":604},"Why GitLab?",{"href":277,"dataGaName":603,"dataGaLocation":582},{"freeTrial":606,"mobileIcon":611,"desktopIcon":616,"secondaryButton":619},{"text":607,"config":608},"Start free trial",{"href":609,"dataGaName":238,"dataGaLocation":610},"https://gitlab.com/-/trials/new/","nav",{"altText":612,"config":613},"Gitlab Icon",{"src":614,"dataGaName":615,"dataGaLocation":610},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203874/jypbw1jx72aexsoohd7x.svg","gitlab icon",{"altText":612,"config":617},{"src":618,"dataGaName":615,"dataGaLocation":610},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1758203875/gs4c8p8opsgvflgkswz9.svg",{"text":620,"config":621},"Get Started",{"href":622,"dataGaName":623,"dataGaLocation":610},"https://gitlab.com/-/trial_registrations/new?glm_source=about.gitlab.com/get-started/","get started",{"freeTrial":625,"mobileIcon":629,"desktopIcon":631},{"text":626,"config":627},"Learn more about GitLab Duo",{"href":269,"dataGaName":628,"dataGaLocation":610},"gitlab duo",{"altText":612,"config":630},{"src":614,"dataGaName":615,"dataGaLocation":610},{"altText":612,"config":632},{"src":618,"dataGaName":615,"dataGaLocation":610},{"button":634,"mobileIcon":639,"desktopIcon":641},{"text":635,"config":636},"/switch",{"href":637,"dataGaName":638,"dataGaLocation":610},"#contact","switch",{"altText":612,"config":640},{"src":614,"dataGaName":615,"dataGaLocation":610},{"altText":612,"config":642},{"src":643,"dataGaName":615,"dataGaLocation":610},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1773335277/ohhpiuoxoldryzrnhfrh.png",{"freeTrial":645,"mobileIcon":650,"desktopIcon":652},{"text":646,"config":647},"Back to pricing",{"href":382,"dataGaName":648,"dataGaLocation":610,"icon":649},"back to pricing","GoBack",{"altText":612,"config":651},{"src":614,"dataGaName":615,"dataGaLocation":610},{"altText":612,"config":653},{"src":618,"dataGaName":615,"dataGaLocation":610},{"title":655,"titleMobile":656,"button":657,"config":662},"Duo Agent Platform delivers 400% ROI, per new Forrester Consulting study.","400% ROI: Forrester TEI for GitLab Duo",{"text":275,"config":658},{"href":659,"dataGaName":660,"dataGaLocation":661},"https://about.gitlab.com/blog/gitlab-duo-agent-platform-delivers-400-percent-roi/","forrester-tei-dap-banner","global-banner",{"layout":663,"disabled":211},"release",{"data":665},{"text":666,"source":667,"edit":673,"contribute":678,"config":683,"items":688,"minimal":898},"Git is a trademark of Software Freedom Conservancy and our use of 'GitLab' is under license",{"text":668,"config":669},"View page source",{"href":670,"dataGaName":671,"dataGaLocation":672},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/","page source","footer",{"text":674,"config":675},"Edit this page",{"href":676,"dataGaName":677,"dataGaLocation":672},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/content/","web ide",{"text":679,"config":680},"Please contribute",{"href":681,"dataGaName":682,"dataGaLocation":672},"https://gitlab.com/gitlab-com/marketing/digital-experience/about-gitlab-com/-/blob/main/CONTRIBUTING.md/","please contribute",{"twitter":684,"facebook":685,"youtube":686,"linkedin":687},"https://twitter.com/gitlab","https://www.facebook.com/gitlab","https://www.youtube.com/channel/UCnMGQ8QHMAnVIsI3xJrihhg","https://www.linkedin.com/company/gitlab-com",[689,736,790,834,866],{"title":380,"links":690,"subMenu":705},[691,695,700],{"text":692,"config":693},"View plans",{"href":382,"dataGaName":694,"dataGaLocation":672},"view plans",{"text":696,"config":697},"Why Premium?",{"href":698,"dataGaName":699,"dataGaLocation":672},"/pricing/premium/","why premium",{"text":701,"config":702},"Why Ultimate?",{"href":703,"dataGaName":704,"dataGaLocation":672},"/pricing/ultimate/","why ultimate",[706],{"title":707,"links":708},"Contact Us",[709,712,714,716,721,726,731],{"text":710,"config":711},"Contact sales",{"href":562,"dataGaName":243,"dataGaLocation":672},{"text":565,"config":713},{"href":567,"dataGaName":568,"dataGaLocation":672},{"text":570,"config":715},{"href":572,"dataGaName":573,"dataGaLocation":672},{"text":717,"config":718},"Status",{"href":719,"dataGaName":720,"dataGaLocation":672},"https://status.gitlab.com/","status",{"text":722,"config":723},"Terms of use",{"href":724,"dataGaName":725,"dataGaLocation":672},"/terms/","terms of use",{"text":727,"config":728},"Privacy statement",{"href":729,"dataGaName":730,"dataGaLocation":672},"/privacy/","privacy statement",{"text":732,"config":733},"Cookie preferences",{"dataGaName":734,"dataGaLocation":672,"id":735,"isOneTrustButton":214},"cookie preferences","ot-sdk-btn",{"title":280,"links":737,"subMenu":746},[738,742],{"text":739,"config":740},"DevSecOps platform",{"href":262,"dataGaName":741,"dataGaLocation":672},"devsecops platform",{"text":743,"config":744},"AI-Assisted Development",{"href":269,"dataGaName":745,"dataGaLocation":672},"ai-assisted development",[747],{"title":748,"links":749},"Topics",[750,755,760,765,770,775,780,785],{"text":751,"config":752},"CICD",{"href":753,"dataGaName":754,"dataGaLocation":672},"/topics/ci-cd/","cicd",{"text":756,"config":757},"GitOps",{"href":758,"dataGaName":759,"dataGaLocation":672},"/topics/gitops/","gitops",{"text":761,"config":762},"DevOps",{"href":763,"dataGaName":764,"dataGaLocation":672},"/topics/devops/","devops",{"text":766,"config":767},"Version Control",{"href":768,"dataGaName":769,"dataGaLocation":672},"/topics/version-control/","version control",{"text":771,"config":772},"DevSecOps",{"href":773,"dataGaName":774,"dataGaLocation":672},"/topics/devsecops/","devsecops",{"text":776,"config":777},"Cloud Native",{"href":778,"dataGaName":779,"dataGaLocation":672},"/topics/cloud-native/","cloud native",{"text":781,"config":782},"AI for Coding",{"href":783,"dataGaName":784,"dataGaLocation":672},"/topics/devops/ai-for-coding/","ai for coding",{"text":786,"config":787},"Agentic AI",{"href":788,"dataGaName":789,"dataGaLocation":672},"/topics/agentic-ai/","agentic ai",{"title":791,"links":792},"Solutions",[793,795,797,802,806,809,813,816,818,821,824,829],{"text":324,"config":794},{"href":319,"dataGaName":324,"dataGaLocation":672},{"text":313,"config":796},{"href":296,"dataGaName":297,"dataGaLocation":672},{"text":798,"config":799},"Agile development",{"href":800,"dataGaName":801,"dataGaLocation":672},"/solutions/agile-delivery/","agile delivery",{"text":803,"config":804},"SCM",{"href":309,"dataGaName":805,"dataGaLocation":672},"source code management",{"text":751,"config":807},{"href":302,"dataGaName":808,"dataGaLocation":672},"continuous integration & delivery",{"text":810,"config":811},"Value stream management",{"href":352,"dataGaName":812,"dataGaLocation":672},"value stream management",{"text":756,"config":814},{"href":815,"dataGaName":759,"dataGaLocation":672},"/solutions/gitops/",{"text":362,"config":817},{"href":365,"dataGaName":366,"dataGaLocation":672},{"text":819,"config":820},"Small business",{"href":371,"dataGaName":372,"dataGaLocation":672},{"text":822,"config":823},"Public sector",{"href":377,"dataGaName":378,"dataGaLocation":672},{"text":825,"config":826},"Education",{"href":827,"dataGaName":828,"dataGaLocation":672},"/solutions/education/","education",{"text":830,"config":831},"Financial services",{"href":832,"dataGaName":833,"dataGaLocation":672},"/solutions/finance/","financial services",{"title":385,"links":835},[836,838,840,842,845,847,850,852,854,856,858,860,862,864],{"text":398,"config":837},{"href":400,"dataGaName":401,"dataGaLocation":672},{"text":403,"config":839},{"href":405,"dataGaName":406,"dataGaLocation":672},{"text":408,"config":841},{"href":410,"dataGaName":411,"dataGaLocation":672},{"text":413,"config":843},{"href":415,"dataGaName":844,"dataGaLocation":672},"docs",{"text":435,"config":846},{"href":437,"dataGaName":438,"dataGaLocation":672},{"text":848,"config":849},"What's new",{"href":494,"dataGaName":495,"dataGaLocation":672},{"text":430,"config":851},{"href":432,"dataGaName":433,"dataGaLocation":672},{"text":449,"config":853},{"href":451,"dataGaName":452,"dataGaLocation":672},{"text":457,"config":855},{"href":459,"dataGaName":460,"dataGaLocation":672},{"text":462,"config":857},{"href":464,"dataGaName":465,"dataGaLocation":672},{"text":467,"config":859},{"href":469,"dataGaName":224,"dataGaLocation":672},{"text":471,"config":861},{"href":473,"dataGaName":474,"dataGaLocation":672},{"text":476,"config":863},{"href":478,"dataGaName":479,"dataGaLocation":672},{"text":481,"config":865},{"href":483,"dataGaName":484,"dataGaLocation":672},{"title":497,"links":867},[868,870,872,874,876,878,882,887,889,891,893],{"text":505,"config":869},{"href":507,"dataGaName":499,"dataGaLocation":672},{"text":510,"config":871},{"href":512,"dataGaName":513,"dataGaLocation":672},{"text":518,"config":873},{"href":520,"dataGaName":521,"dataGaLocation":672},{"text":523,"config":875},{"href":525,"dataGaName":526,"dataGaLocation":672},{"text":528,"config":877},{"href":530,"dataGaName":531,"dataGaLocation":672},{"text":879,"config":880},"Sustainability",{"href":881,"dataGaName":879,"dataGaLocation":672},"/sustainability/",{"text":883,"config":884},"Diversity, inclusion and belonging (DIB)",{"href":885,"dataGaName":886,"dataGaLocation":672},"/diversity-inclusion-belonging/","Diversity, inclusion and belonging",{"text":533,"config":888},{"href":535,"dataGaName":536,"dataGaLocation":672},{"text":543,"config":890},{"href":545,"dataGaName":546,"dataGaLocation":672},{"text":548,"config":892},{"href":550,"dataGaName":551,"dataGaLocation":672},{"text":894,"config":895},"Modern Slavery Transparency Statement",{"href":896,"dataGaName":897,"dataGaLocation":672},"https://handbook.gitlab.com/handbook/legal/modern-slavery-act-transparency-statement/","modern slavery transparency statement",{"items":899},[900,903,906],{"text":901,"config":902},"Terms",{"href":724,"dataGaName":725,"dataGaLocation":672},{"text":904,"config":905},"Cookies",{"dataGaName":734,"dataGaLocation":672,"id":735,"isOneTrustButton":214},{"text":907,"config":908},"Privacy",{"href":729,"dataGaName":730,"dataGaLocation":672},[910],{"id":911,"title":7,"body":210,"config":912,"content":914,"description":210,"extension":917,"meta":918,"navigation":214,"path":919,"seo":920,"stem":921,"__hash__":922},"blogAuthors/en-us/blog/authors/tim-lehnen.yml",{"template":913},"BlogAuthor",{"name":7,"config":915},{"headshot":198,"ctfId":916},"hestenet","yml",{},"/en-us/blog/authors/tim-lehnen",{},"en-us/blog/authors/tim-lehnen","FTpqgdwvT-DikXsDbA2mff4JwGRyNkpTiZTIGMmJhgc",[924,932,940],{"title":925,"description":926,"heroImage":927,"category":206,"date":928,"authors":929,"slug":931,"externalUrl":210},"What's new in Git 2.55.0?","Learn about the new features and changes in Git 2.55, including a new git-history(1) fixup command, an fsmonitor daemon for Linux, pushing to remote groups, and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782732487/ztwgrvlolpifo01vj8qc.png","2026-06-29",[930],"Toon Claes","whats-new-in-git-2-55-0",{"title":933,"description":934,"heroImage":935,"category":206,"date":936,"authors":937,"slug":939,"externalUrl":210},"GitLab AI Hackathon 2026: Meet the winners","Nearly 7,000 developers built 600+ AI agents and flows on GitLab Duo Agent Platform. Find out who won and what they created.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1776457632/llddiylsgwuze0u1rjks.png","2026-04-22",[938],"Nick Veenhof","gitlab-ai-hackathon-2026-meet-the-winners",{"title":941,"description":942,"heroImage":943,"category":206,"date":944,"authors":945,"slug":947,"externalUrl":210},"What’s new in Git 2.54.0?","Learn about release contributions, including new repository maintenance, a new command to edit commit history, a replacement for git-sizer(1), and more.","https://res.cloudinary.com/about-gitlab-com/image/upload/v1782734716/ztwgrvlolpifo01vj8qc.png","2026-04-20",[946],"Patrick Steinhardt","whats-new-in-git-2-54-0",{"promotions":949},[950,964,976,988],{"id":951,"categories":952,"header":954,"text":955,"button":956,"image":961},"ai-modernization",[953],"ai","Is AI achieving its promise at scale?","Quiz will take 5 minutes or less",{"text":957,"config":958},"Get your AI maturity score",{"href":959,"dataGaName":960,"dataGaLocation":438},"/assessments/ai-modernization-assessment/","modernization assessment",{"config":962},{"src":963},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/qix0m7kwnd8x2fh1zq49.png",{"id":965,"categories":966,"header":968,"text":955,"button":969,"image":973},"devops-modernization",[967,774],"product","Are you just managing tools or shipping innovation?",{"text":970,"config":971},"Get your DevOps maturity score",{"href":972,"dataGaName":960,"dataGaLocation":438},"/assessments/devops-modernization-assessment/",{"config":974},{"src":975},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138785/eg818fmakweyuznttgid.png",{"id":977,"categories":978,"header":980,"text":955,"button":981,"image":985},"security-modernization",[979],"security","Are you trading speed for security?",{"text":982,"config":983},"Get your security maturity score",{"href":984,"dataGaName":960,"dataGaLocation":438},"/assessments/security-modernization-assessment/",{"config":986},{"src":987},"https://res.cloudinary.com/about-gitlab-com/image/upload/v1772138786/p4pbqd9nnjejg5ds6mdk.png",{"id":989,"paths":990,"header":993,"text":994,"button":995,"image":1000},"github-azure-migration",[991,992],"migration-from-azure-devops-to-gitlab","integrating-azure-devops-scm-and-gitlab","Is your team ready for GitHub's Azure move?","GitHub is already rebuilding around Azure. Find out what it means for you.",{"text":996,"config":997},"See how GitLab compares to GitHub",{"href":998,"dataGaName":999,"dataGaLocation":438},"/compare/gitlab-vs-github/github-azure-migration/","github azure migration",{"config":1001},{"src":975},{"header":1003,"blurb":1004,"button":1005,"secondaryButton":1010},"Start building faster today","See what your team can do with the intelligent orchestration platform for DevSecOps.\n",{"text":1006,"config":1007},"Get your free trial",{"href":1008,"dataGaName":238,"dataGaLocation":1009},"https://gitlab.com/-/trial_registrations/new?glm_content=default-saas-trial&glm_source=about.gitlab.com/","feature",{"text":710,"config":1011},{"href":562,"dataGaName":243,"dataGaLocation":1009},1786803753736]