<?xml version="1.0" encoding="utf-8"?>
<rss xmlns:dc="https://purl.org/dc/elements/1.1/" xmlns:content="https://purl.org/rss/1.0/modules/content/" xmlns:foaf="https://xmlns.com/foaf/0.1/" xmlns:og="https://ogp.me/ns#" xmlns:rdfs="https://www.w3.org/2000/01/rdf-schema#" xmlns:schema="https://schema.org/" xmlns:sioc="https://rdfs.org/sioc/ns#" xmlns:sioct="https://rdfs.org/sioc/types#" xmlns:skos="https://www.w3.org/2004/02/skos/core#" xmlns:xsd="https://www.w3.org/2001/XMLSchema#" version="2.0" xml:base="https://www.linuxjournal.com/tag/gitlab">
  <channel>
    <title>GitLab</title>
    <link>https://www.linuxjournal.com/tag/gitlab</link>
    <description/>
    <language>en</language>
    
    <item>
  <title>Continuous Integration/Continuous Development with FOSS Tools</title>
  <link>https://www.linuxjournal.com/content/continuous-integrationcontinuous-development-foss-tools</link>
  <description>  &lt;div data-history-node-id="1340732" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/brian-ho-509152-unsplash.jpg" width="1979" height="2000" alt="Image from Brian Ho on Unsplash" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/quentin-hartman" lang="" about="https://www.linuxjournal.com/users/quentin-hartman" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Quentin Hartman&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;Up your DevOps game! Get the fundamentals of CI/CD with FOSS tools
now!&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
One of the hottest topics within the DevOps space is Continuous Integration
and Continuous Deployment (CI/CD). This attention has drawn lots of
investment dollars, and a vast array of proprietary Software As A Service
(SaaS) tools have been created in the CI/CD space, which traditionally
has been dominated by free open-source software (FOSS) tools. Is FOSS still the
right choice with the low cost of many of these SaaS options?
&lt;/p&gt;

&lt;p&gt;
It depends. In many cases, the cost of self-hosting these FOSS tools will be
greater than the cost to use a non-FOSS SaaS option. However, even in
today's cloud-centric and SaaS-saturated world, you may have good
reasons to self-host FOSS. Whatever those reasons may be, just don't
forget that "Free" isn't free when it comes to keeping a service running
reliably 24/7/365. If you're looking at FOSS as a means to save money,
make sure you account for those costs.
&lt;/p&gt;

&lt;p&gt;
Even with those costs accounted for, FOSS still delivers a lot of value,
especially to small and medium-sized organizations that are taking their
first steps into DevOps and CI/CD. Starting with a commercialized FOSS
product is a great middle ground. It gives a smooth growth path into the
more advanced proprietary features, allowing you to pay for those only once
you need them. Often called Open Core, this approach isn't universally
loved, but when applied well, it has allowed for a lot of value to be
created for everyone involved.
&lt;/p&gt;

&lt;h3&gt;
An Embarrassment of Riches&lt;/h3&gt;

&lt;p&gt;
The DevOps concept exploded in the past several years. The term quickly
saturated the mainstream technology industry. With this increased mindshare
comes a corresponding increase in the number of tools available to
accomplish DevOps-related tasks. That's a blessing and a curse as a
DevOps practitioner. Thanks to the endless buffet of options, you're
sure to find something that meets your needs, but to a newcomer, the
multitude of choices is overwhelming. Combine that with the vast scope of
tasks that fall under the DevOps umbrella and the competing claims of
"best" from all sides, and you have a recipe for paralysis. A good
place for finding tools and filtering by a variety of criteria is
&lt;a href="https://www.devopsbookmarks.com"&gt;DevOpsBookmarks.com&lt;/a&gt;. The
content is all open source, and the maintainers
are diligent about merging contributions, but it hasn't seen a lot of
updates lately. Despite that, it makes a great jumping off point. If you
find something noteworthy that should be included, a pull request would be
appreciated!
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/continuous-integrationcontinuous-development-foss-tools" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Wed, 31 Jul 2019 11:30:00 +0000</pubDate>
    <dc:creator>Quentin Hartman</dc:creator>
    <guid isPermaLink="false">1340732 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Take Your Git In-House</title>
  <link>https://www.linuxjournal.com/content/take-your-git-house</link>
  <description>  &lt;div data-history-node-id="1339954" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/gitlab-logo.jpg" width="800" height="500" alt="gitlab logo" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/john-s-tonello" lang="" about="https://www.linuxjournal.com/users/john-s-tonello" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;John S. Tonello&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;If you're wary of the Microsoft takeover of GitHub, or if you've been
looking for a way to ween yourself off free public repositories, or if you want
to ramp up your DevOps efforts, now's a good time to look at installing
and running GitLab yourself. It's not as difficult as you might think,
and the free, open-source GitLab CE version provides a lot of flexibility to
start from scratch, migrate or graduate to more full-fledged versions.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
In today's software business, getting solid code out the door fast is a
must, and practices to make that easier are part of any organization's
DevOps toolset. Git has risen to the top of the heap of version control
tools, because it's simple, fast and makes collaboration easy.
&lt;/p&gt;

&lt;p&gt;
For developers, tools like Git ensure that their code isn't just
backed up and made available to others, but nearly guarantees that it can be
incorporated into a wide variety of third-party development tools—from
Jenkins to Visual Studio—that make continuous integration and
continuous delivery (CI/CD) possible. Orchestration, automation and
deployment tools easily integrate with Git as well, which means code developed
on any laptop or workstation anywhere can be merged, branched and integrated
into deployed software. That's why version control repositories are the
future of software development and DevOps, no matter how big or small you
are, and no matter whether you're building monolithic apps or
containerized ones.
&lt;/p&gt;

&lt;h3&gt;
Getting Started with Git&lt;/h3&gt;

&lt;p&gt;
Git works by taking snapshots of code on every commit, so every version of
contributed code is always available. That means it's easy to roll back
changes or look over different contributors' work.
&lt;/p&gt;

&lt;p&gt;
If you're working in an environment that uses Git, you can do your work
even when you're offline. Everything is saved in a project structure on
your workstation, just as it is in the remote Git repository, and when
you're next online, your commits and pushes update the master (or other)
code branch quickly and easily.
&lt;/p&gt;

&lt;p&gt;
Most Git users (even newbies) use the Git command-line tools to clone, commit
and push changes, because it's easy, and for nearly 28-million developers,
GitHub has become the de facto remote Git-based repository for their work. In
fact, GitHub has moved beyond being just a code repository to become a
multifaceted code community featuring 85-million projects. That's a lot
of code.
&lt;/p&gt;

&lt;p&gt;
GitLab is gaining popularity as a remote code repository too, but it's
smaller and bills itself as more DevOps-focused, with CI/CD tool included
for free. Both repositories offer free hosted accounts that allow users to
create a namespace, and start contributing and collaborating right away.
The graphical browser interfaces offered by the GitHub- and GitLab-hosted
services make it easy to manage projects and project code, and also to add
SSH keys, so
you easily can connect from your remote terminal on Linux, Windows or Mac.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/take-your-git-house" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Thu, 27 Sep 2018 12:56:39 +0000</pubDate>
    <dc:creator>John S. Tonello</dc:creator>
    <guid isPermaLink="false">1339954 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Opinion: GitHub vs GitLab</title>
  <link>https://www.linuxjournal.com/content/opinion-github-vs-gitlab</link>
  <description>  &lt;div data-history-node-id="1339943" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/gitlab-logo_0.jpg" width="800" height="500" alt="gitlab logo" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/matt-lee" lang="" about="https://www.linuxjournal.com/users/matt-lee" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Matt Lee&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;&lt;em&gt;Free software deserves free tools, not Microsoft-owned GitHub.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;
So, Microsoft bought GitHub, and many people are confused or
worried. It's not a new phenomenon when any large company buys any
smaller company, and people are right to be worried, although I argue
that their timing is wrong. Like Microsoft, GitHub has made some
useful contributions to free and open-source software, but let's not
forget that GitHub's main product is proprietary software. And, it's not
just some innocuous web service either; GitHub makes and sells a
proprietary software package you can download and run on your own
server called GitHub Enterprise (GHE).
&lt;/p&gt;

&lt;p&gt;
Let's remember how we got here. BitMover made a tool called BitKeeper,
a proprietary version control system that allowed free-of-charge
licenses to free software projects. In 2002, the Linux kernel switched
to using BitKeeper for its version control, although some notable
developers made the noble choice to refuse to use the proprietary
program. Many others did not, and for a number of years, kernel development
was hampered by BitKeeper's restrictive noncommercial licenses.
&lt;/p&gt;

&lt;p&gt;
In 2005, Andrew Tridgell, working at OSDL, developed a client
that bypassed this restriction, and as a result, BitMover removed
licenses to BitKeeper from all OSDL employees—including Linus
Torvalds. Eventually, all non-commercial licenses were stopped, and new
licenses included clauses preventing the development of alternative
version control systems. As a result of this, two new projects were
born: Mercurial and Git. Created in a few short weeks in 2005, Git
quickly became the version control system for Linux development.
&lt;/p&gt;

&lt;p&gt;
Proprietary version control tools aren't common in free software
development, but proprietary collaboration websites have been around
for some time. One of the earliest collaboration websites still around
today is Sourceforge. Sourceforge was created in the late 1990s by VA
Software, and the code behind the project was released in
2000.
&lt;/p&gt;

&lt;p&gt;
Quickly this situation changed, and &lt;a href="https://fsfe.org/news/2001/article2001-10-20-01.en.html"&gt;the project was shuttered
and then became Sourceforge Enterprise
Edition&lt;/a&gt;, a
proprietary software package. The code that ran Sourceforge was forked
into GNU Savannah (later Savane) and GForge, and it's still use today by
both the GNU Project and CERN. When &lt;a href="https://www.fsf.org/blogs/community/savannah"&gt;I last wrote about this
problem&lt;/a&gt;, almost exactly
ten years ago, Canonical's ambitious Launchpad service still
was proprietary, something later remedied in 2009. Gitorious was created
in 2010 and was for a number of years the Git hosting platform for the
discerning free software developer, as the code for Gitorious was
fully public and licensed under favorable terms for the new wave of
AGPL-licensed projects that followed the FSF's Franklin Street
Statement. Gitorious, also, is sadly no longer with us.
&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/opinion-github-vs-gitlab" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Mon, 16 Jul 2018 11:30:00 +0000</pubDate>
    <dc:creator>Matt Lee</dc:creator>
    <guid isPermaLink="false">1339943 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Git Your July 2018 Issue of Linux Journal: Now Available</title>
  <link>https://www.linuxjournal.com/content/git-your-july-2018-issue-linux-journal-now-available</link>
  <description>  &lt;div data-history-node-id="1339995" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/LJ288-July2018.png" width="800" height="493" alt="Linux Journal July 2018 cover" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/carlie-fairchild" lang="" about="https://www.linuxjournal.com/users/carlie-fairchild" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Carlie Fairchild&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;Along with Microsoft buying Github recently, we received hundreds of questions and comments about all things git. How does one install and run GitLab themselves? Should they? What's the difference between GitHub and GitLab? How can one migrate repositories from GitHub and host on their own Linux server? So with this July issue of&lt;em&gt; Linux Journal&lt;/em&gt;, we take a Deep Dive in to... git. Enjoy!&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Feature articles include:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;A Git Origin Story by Zack Brown&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;A look at the Linux kernel developers' various revision control solutions through the years, Linus Torvalds' decision to use BitKeeper and the controversy that followed, and how Git came to be created.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Git Quick Start Guide by Patrick Whelan&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Ditch USBs and start using real version control, and if you follow this guide, you can start using git in 30 minutes!&lt;em&gt;&lt;/em&gt;&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Building a Bare-Bones Git Environment by Andy Carlson&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;How to migrate repositories from GitHub, configure the software and get started with hosting Git repositories on your own Linux server.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Take Your Git In-House by John S. Tonello&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;If you're wary of the Microsoft takeover of GitHub, or if you've been looking for a way to ween yourself off free public repositories, or if you want to ramp up your DevOps efforts, now's a good time to look at installing and running GitLab yourself. It's not as difficult as you might think, and the free, open-source GitLab CE version provides a lot of flexibility to start from scratch, migrate or graduate to more full-fledged versions.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;
Terrible Ideas in Git by Corey Quinn&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;This article was derived from a talk that GitHub Universe faithfully rejects every year. I can't understand why....&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Opinion: GitHub vs GitLab by Matt Lee&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;Free software deserves free tools, not Microsoft-owned GitHub.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;&lt;strong&gt;Other articles in this issue:&lt;/strong&gt;&lt;/p&gt;

&lt;p&gt;Encrypting NFSv4 with Stunnel TLS by Charles Fisher&lt;/p&gt;
&lt;p&gt;
&lt;em&gt;NFS clients and servers push file traffic over clear-text connections in the default configuration, which is incompatible with sensitive data. TLS can wrap this traffic, finally bringing protocol security. Before you use your cloud provider's NFS tools, review all of your NFS usage and secure it where necessary.&lt;/em&gt;&lt;/p&gt;

&lt;p&gt;Advertising 3.0 by Doc Searls&lt;/p&gt;

&lt;p&gt;Road to RHCA—Preparation Meets Opportunity by Taz Brown&lt;/p&gt;

&lt;p&gt;FOSS Project Spotlight: ONLYOFFICE, an Online Office Suite by Tatiana Kochedykova&lt;/p&gt;

&lt;p&gt;At Rest Encryption by Kyle Rankin&lt;/p&gt;

&lt;p&gt;Progress with Your Image by Kyle Rankin&lt;/p&gt;

&lt;p&gt;FOSS Project Spotlight: Pydio Cells, an Enterprise-Focused File-Sharing Solution by Italo Vignoli&lt;/p&gt;

&lt;p&gt;Atomic Modeling with GAMGI by Joey Bernard&lt;/p&gt;

&lt;p&gt;News Briefs by Jill Franklin&lt;/p&gt;

&lt;p&gt;
Kyle Rankin's Hack and /: What Really IRCs Me: Slack&lt;/p&gt;

&lt;p&gt;Reuven M. Lerner's At the Forge: Introducing Python 3.7's Dataclasses&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/git-your-july-2018-issue-linux-journal-now-available" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Mon, 02 Jul 2018 17:30:00 +0000</pubDate>
    <dc:creator>Carlie Fairchild</dc:creator>
    <guid isPermaLink="false">1339995 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Microsoft Buys GitHub: Three Weeks Later</title>
  <link>https://www.linuxjournal.com/content/microsoft-buys-github-three-weeks-later</link>
  <description>  &lt;div data-history-node-id="1339982" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/30_days_at_gitlab-1360x693.png" width="800" height="408" alt="""" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/marcel-gagn%C3%A9" lang="" about="https://www.linuxjournal.com/users/marcel-gagn%C3%A9" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Marcel Gagné&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;I heard that Microsoft would be buying GitHub just a couple days before it happened when Carlie Fairchild at &lt;em&gt;Linux Journal&lt;/em&gt; told me about it. I replied to the news with a solid, “Get! Out!” Needless to say, I had my doubts. As someone who remembers all too well the “Embrace, extend and extinguish" days of Microsoft, the news of this latest embrace did, however briefly, bring back those old memories. When I was asked what I thought, I answered that &lt;em&gt;the optics were bad&lt;/em&gt;.A lot of years have passed since, back in 2001, &lt;a href="https://www.theregister.co.uk/2001/06/02/ballmer_linux_is_a_cancer"&gt;Steve Ballmer declared Linux to be a cancer&lt;/a&gt;. These days, Microsoft loves Linux. It says so &lt;a href="https://cloudblogs.microsoft.com/windowsserver/2015/05/06/microsoft-loves-linux"&gt;right on its website&lt;/a&gt;. Two years ago, Steve Ballmer also &lt;a href="https://www.zdnet.com/article/ballmer-i-may-have-called-linux-a-cancer-but-now-i-love-it"&gt;proclaimed his love&lt;/a&gt; for Linux. In 2018, Microsoft has its own distribution that it uses in its Azure cloud. Microsoft includes several different flavors of Linux in its app store (the Windows Subsystem for Linux), all of which can be installed on Windows 10. Microsoft develops for Linux. Heck, Microsoft even contributes to the Linux kernel.&lt;/p&gt;

&lt;p&gt;The reason I felt the optics were bad is that Microsoft has spent the last few years going out of its way to paint itself as a friend to Linux and open source. This, I thought, can only be seen as a bad move. Well, it’s been three weeks, more or less, since the the acquisition became official, to the tune of $7.5 billion US. What happened?&lt;/p&gt;

&lt;p&gt;For starters, Jim Zemlin, the Executive Director of the Linux Foundation, praised the Microsoft acquisition of GifHub, suggesting that it could be a good thing for everyone. Former open-source star and the new CEO of GitHub, Nat Friedman, did an AMA on Reddit to reassure developers of open-source software that they had nothing to fear from the new landlords.&lt;/p&gt;

&lt;p&gt;Linus Torvalds, the creator of the Linux kernel and git itself, didn’t comment directly, but he has been critical of GitHub in the past, so perhaps it doesn’t change anything for him. Besides, the kernel is primarily housed on a private git server, and GitHub is just a public mirror for the code.&lt;/p&gt;

&lt;p&gt;That didn’t stop some number of open-source developers from swearing off GitHub and looking for other places to host their projects. GitLab, a minor competitor to GitHub, seemed poised to be the natural beneficiary of this move. In a Twitter post dated June 3rd, it cited that its GitHub to GitLab conversion rate was running at ten times normal.&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/microsoft-buys-github-three-weeks-later" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Tue, 26 Jun 2018 11:30:00 +0000</pubDate>
    <dc:creator>Marcel Gagné</dc:creator>
    <guid isPermaLink="false">1339982 at https://www.linuxjournal.com</guid>
    </item>
<item>
  <title>Back Up GitHub and GitLab Repositories Using Golang</title>
  <link>https://www.linuxjournal.com/content/back-github-and-gitlab-repositories-using-golang</link>
  <description>  &lt;div data-history-node-id="1339936" class="layout layout--onecol"&gt;
    &lt;div class="layout__region layout__region--content"&gt;
      
            &lt;div class="field field--name-field-node-image field--type-image field--label-hidden field--item"&gt;  &lt;img src="https://www.linuxjournal.com/sites/default/files/nodeimage/story/github-collab-retina-preview.gif" width="400" height="400" alt="github logo" typeof="foaf:Image" class="img-responsive" /&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-author field--type-ds field--label-hidden field--item"&gt;by &lt;a title="View user profile." href="https://www.linuxjournal.com/users/amit-saha" lang="" about="https://www.linuxjournal.com/users/amit-saha" typeof="schema:Person" property="schema:name" datatype="" xml:lang=""&gt;Amit Saha&lt;/a&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-body field--type-text-with-summary field--label-hidden field--item"&gt;&lt;p&gt;
&lt;em&gt;Want to learn Golang and build something useful? Learn how to write a
tool to back up your GitHub and GitLab repositories.&lt;/em&gt;
&lt;/p&gt;

&lt;p&gt;
GitHub and GitLab are two
popular Git repository hosting services that are used to host and manage
open-source projects. They also have become an easy way for content
creators to be able to invite others to share and collaborate without
needing to have their own infrastructure setup.
&lt;/p&gt;

&lt;p&gt;
Using hosted services that you don't manage yourself, however, comes with a
downside. Systems fail, services go down and disks crash. Content
hosted on remote services can simply vanish. Wouldn't it be nice if you
could have an easy way to back up your git repositories periodically into
a place you control?
&lt;/p&gt;

&lt;p&gt;
If you follow along with this article, you will write a Golang program to back up git
repositories from &lt;a href="https://github.com"&gt;GitHub&lt;/a&gt; and &lt;a href="https://about.gitlab.com"&gt;GitLab&lt;/a&gt; (including custom GitLab
installations). Being familiar with Golang basics will be helpful, but
not required. Let's get started!
&lt;/p&gt;

&lt;h3&gt;
Hello Golang&lt;/h3&gt;

&lt;p&gt;
The latest stable release of Golang at the time of this writing is 1.8. The package name is
usually golang, but if your Linux distro doesn't have this release,
you can &lt;a href="https://golang.org/dl"&gt;download the Golang compiler&lt;/a&gt; and
other tools for Linux. Once downloaded, extract it to
/usr/local:

&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
$ sudo tar -C /usr/local -xzf &lt;filename-from-above&gt;
$ export PATH=$PATH:/usr/local/go/bin
&lt;/code&gt;
&lt;/pre&gt;


&lt;p&gt;
Opening a new terminal and typing &lt;code&gt;$ go version&lt;/code&gt; should show the
following:


&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
$ go version
go version go1.8 linux/amd64
&lt;/code&gt;
&lt;/pre&gt;



&lt;p&gt;
Let's write your first program. Listing 1 shows a program that expects
a &lt;code&gt;-name&lt;/code&gt; flag (or argument) when run and prints a greeting using the
specified name. Compile and run the program as follows:

&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
$ go build listing1.go
$ ./listing1 -name "Amit"
Hello Amit

$ ./listing1
./listing1
2017/02/18 22:48:25 Please specify your name using -name
$ echo $?
1
&lt;/code&gt;
&lt;/pre&gt;


&lt;p&gt;
If you don't specify the &lt;code&gt;-name&lt;/code&gt; argument, it exits printing a message
with a non-zero exit code. You can combine both compiling and running
the program using &lt;code&gt;go run&lt;/code&gt;:

&lt;/p&gt;&lt;pre&gt;
&lt;code&gt;
$ go run listing1.go -name Amit
2017/03/04 23:08:11 Hello Amit
&lt;/code&gt;
&lt;/pre&gt;


&lt;p&gt;&lt;em&gt;
Listing 1. Example Program listing1.go&lt;/em&gt;

&lt;/p&gt;&lt;/div&gt;
      
            &lt;div class="field field--name-node-link field--type-ds field--label-hidden field--item"&gt;  &lt;a href="https://www.linuxjournal.com/content/back-github-and-gitlab-repositories-using-golang" hreflang="en"&gt;Go to Full Article&lt;/a&gt;
&lt;/div&gt;
      
    &lt;/div&gt;
  &lt;/div&gt;

</description>
  <pubDate>Mon, 04 Jun 2018 21:46:37 +0000</pubDate>
    <dc:creator>Amit Saha</dc:creator>
    <guid isPermaLink="false">1339936 at https://www.linuxjournal.com</guid>
    </item>

  </channel>
</rss>
