Skip to content

Learn From the Experts at GitHub Universe

educationalspeaker_blogheader

Interested in polishing your GitHub skills this week? Many GitHub Universe speakers will be offering tips, tricks, and case studies on everything from pull requests to workflow strategy. Don’t miss these educational and entertaining sessions:

  • GitHub's Brent Beer explores what makes a great pull request and how GitHub’s features unlock a strong workflow.
  • GitHub’s Matt Colyer teaches GitHub Enterprise basics, from administration to maximizing new features.
  • Look at a range of strategies for knowledge sharing, support, and practice with Peter Bell at Wheelhouse.io.
  • Hear from Ben Balter and the GitHub Pages team about advanced techniques that can help improve your content publishing workflow.
  • Maximize your GitHub Enterprise security system with tips about installation and collaboration from GitHub’s Matt Duff.
  • Mozilla’s Myk Melez discusses how to integrate Offline Web Apps with GitHub Pages to host static assets.

Check out the full schedule of sessions here. See you tomorrow!

New organization permissions now available

We've begun rolling out major improvements to GitHub organization permissions to all organizations on GitHub.com. These improvements include new customizable member privileges, fine-grained team permissions, and more open communication. Over the next few days, all organization owners will be able to take advantage of the new system.

Announced a few short months ago, these improvements give your organization the flexibility to work the way you want. To recap, here are just a few highlights:

  • (Opt-in) Members can view and mention all teams, even when they're not on those teams.
  • (Opt-in) Members can create repositories without help from an owner.
  • Members can create new teams to self-organize with the people they work with.
  • Owners can give just the right amount of access to contractors and interns by adding them to repositories without giving them the privileges of organization members.
  • And many more! Learn about GitHub's improved organization permissions.

Coding together just got easier.

Hacktoberfest: Contribute to Open Source in October

Celebrate open source this October by participating in Hacktoberfest, a month long festival of code organized by DigitalOcean and hosted on GitHub.

Hacktoberfest Graphic

How to participate

Participation is simple: Choose any open source project hosted on GitHub and contribute by sending a pull request. You can fix a bug, add a feature, or even improve some documentation. Once you've made your contribution, tell the world about it by sharing with the #hacktoberfest hashtag so we can celebrate with you.

Starting tomorrow, and each day throughout the month of October, there will be an interesting open source project that is looking for contributors highlighted on the Hacktoberfest website. If you need help getting started, be sure to check out our guide to contributing to open source.

Get your t-shirt

Hacktoberfest t-shirt

Here's everything you need to do to get your free, limited edition Hacktoberfest t-shirt:

  1. Sign up on the Hacktoberfest website right away
  2. Open at least four pull requests on any GitHub-hosted open source project(s) by October 31st, 2015
  3. After the month is over, DigitalOcean will collect your shipping details and mail your shirt

Git 2.6, including flexible fsck and improved status

The open source Git project has just released Git 2.6.0. Here's our take on its most useful new features:

git fsck flexibility

If you're tired of having git fsck remind you of peccadillos from your distant past, read on. With Git 2.6, you can tell git fsck not to be quite so picky about minor data errors in your project's history.

The oddly-named1 git fsck command verifies the integrity of a Git repository, checking both that its data has not been corrupted and that its objects have the right format. You can even enable Git's transfer.fsckObjects configuration variable to make Git apply the same checks to objects that are pushed into your repository. At GitHub, for example, we enable this feature on our servers to block malformed objects from entering your project's history in the first place.

But what happens when you detect a problem in an object that is already part of your project's history? You may recall that Git objects are content-addressed and immutable. Changing an object's content, even to fix a syntactic error, changes its SHA-1 hash. And any commits which build on that object will need to update their references to it, changing their SHA-1 hashes, and so on.

Therefore, fixing a broken object requires all subsequent history to be rewritten. Sometimes it is worth doing. But sometimes, for mild forms of corruption in a repository that has already been cloned by many users, the repair process can be more trouble than it's worth. Accepting the objects as they are can sometimes be the least bad solution. But until now, that meant turning off these fsck checks entirely, losing all of the extra protection.

But now With Git v2.6, there is a better option. You can now adjust the severity of particular fsck warnings, or even tell fsck to ignore warnings entirely for a particular object. To demonstrate, let's create two commit objects with broken email addresses:

$ git cat-file commit HEAD | sed 's/</<</' | git hash-object --stdin -w -t commit
2fae34b45b7202796fbe07fdb73d47ba94af1878
$ git cat-file commit HEAD^ | sed 's/</<</' | git hash-object --stdin -w -t commit
b4a1fc6eed23c19fd5eed3f17d50b2a155d56aa9

git fsck rightly complains about the broken objects:

$ git fsck
error in commit 2fae34b45b7202796fbe07fdb73d47ba94af1878: badEmail: invalid author/committer line - bad email
error in commit b4a1fc6eed23c19fd5eed3f17d50b2a155d56aa9: badEmail: invalid author/committer line - bad email
Checking object directories: 100% (256/256), done.

If your history is riddled with invalid email addresses, you might decide to tell git fsck to ignore this type of corruption in the whole repository:

$ git config fsck.badEmail ignore
$ git fsck
Checking object directories: 100% (256/256), done.

On the other hand, perhaps you only want to tolerate the existing broken objects, but you still want git fsck to complain if any new ones enter your repository. If so, you can tell fsck "don't give these objects any trouble; they're with me."

$ git config fsck.skiplist "$PWD/.git/skiplist"
$ echo 2fae34b45b7202796fbe07fdb73d47ba94af1878 >>.git/skiplist
$ echo b4a1fc6eed23c19fd5eed3f17d50b2a155d56aa9 >>.git/skiplist
$ git fsck
Checking object directories: 100% (256/256), done.

Since Git objects are immutable, you know that the objects you have vouched for cannot develop new problems—unless of course the object's data gets corrupted on disk, in which case fsck will complain anyway, regardless of the skiplist.

git status more informative during interactive rebase

If you've ever used Git's interactive rebase on a large series of commits, you know that it's easy to get confused about where you are. The git status command used to report that you are rebasing, but not much more:

$ git status
rebase in progress; onto 1e7a542
You are currently editing a commit while rebasing branch 'master' on '1e7a542'.

nothing to commit, working directory clean

But as of v2.6, git status gives much more context about your progress through the rebase:

$ git status
interactive rebase in progress; onto 1e7a542
Last commands done (5 commands done):
   pick da6bc48 commit four
   edit 12ee9f3 commit five
Next commands to do (5 remaining commands):
   pick 8262b99 commit six
   squash 0f9e8ec commit seven
You are currently editing a commit while rebasing branch 'master' on '1e7a542'.

nothing to commit, working directory clean

log --date can use custom formats

Git's --date option (and the matching log.date configuration variable) let you format commit dates in a variety of standard formats, including rfc2822 and iso8601. But until now, you couldn't invent your own formats. As of v2.6, Git supports the same formatting language as your system's strftime(3) function. This lets you do silly things:

$ git log --date=format:"On the %d day of %B, my true git gave to me..."
commit bee53d49e0899e697f72ea3cee87427f319f5707
Author: Jeff King <peff@peff.net>
Date:   On the 05 day of April, my true git gave to me...

    ...a commit message in a pear tree.

But it also lets you take advantage of your system's localized date code. For example, %c shows the time in your preferred local format:

$ git config log.date "format:%c"
$ export LANG=es_ES.UTF-8
$ git log
commit bee53d49e0899e697f72ea3cee87427f319f5707
Author: Jeff King <peff@peff.net>
Date:   dom 05 abr 2015 13:02:03 GMT

    ...a commit message in a pear tree

git log --cc now shows diffs by default

The --cc option (e.g., to git log) modifies the way Git displays the diffs for merge commits. But until now it did not actually tell Git to show the diff. Now --cc implies -p, so that you don't have to specify the latter option separately.

The rest of the iceberg

That's just a peek at the improvements in Git v2.6. For the full list of changes, check out the release notes.

This Git release has 665 commits from 67 contributors. We'd especially like to shout out to Junio C Hamano, who recently celebrated his 10th year as Git's maintainer. Thanks, everybody!


[1] The name isn't so odd if you know the history. Unix systems have long had an fsck command, which does a File System ChecK. The original idea of git was to act as a content-addressable filesystem for versioned data. Thus, its checking tool was naturally named git-fsck.

GitHub Universe: Prepare for Launch

With the first ever GitHub Universe only a few short days away, we wanted to give you an overview of some of the cool stuff we have planned that you might have missed, and to make sure you’re prepared.

universe-header

Transportation

  • There will be no parking at Pier 70, so if you drive you will need to find parking in the Dogpatch nearby.
  • If you choose to take Public transit, take the Muni T-line and exit at 3rd St & 20th St. Follow signs to the entrance.
  • Bike valet will be available for cyclists as you approach the venue.
  • Have your Uber driver enter the code UNIVERSE2015 in the “destination” field on your Uber app to take you directly to the front entrance of Pier 70 (420 22nd Street). New users of Uber will get $20 off transportation with this code!

The Main Event

  • Pier 70 is a raw, industrial space. We recommend wearing closed toed shoes and bringing layers, as it might be cool in the morning and evening. It’s part of the adventure.
  • To make GitHub Universe as accessible as possible, we will be providing ASL interpretation and a nursing room on site. If you are interested in ASL interpretation for a specific session, please email socialimpact@github.com and we will insure that interpretation services are available to you.
  • Universe attendees will have the opportunity to sign up for a complimentary, 30 minute consultation conducted by our very own GitHub Services team, to discuss workflows, use cases, migrations, or any other Git topics you had in mind. If you're interested in joining us, please send an email to services@github.com. Since we have a limited number of sessions, attendees will be scheduled on a first-come, first-served basis.
  • We have updated the Code of Conduct. Please review it here.
  • Check out Gitter's Unofficial Hitchhiker's Guide to GitHub Universe, an app designed to help you connect with other Universe attendees! Meet likeminded people and form a dinner group.

After-party

  • The after-party will take place on Thursday, October 1 at the Village (969 Market Street), beginning at 8pm and continuing until Midnight. Mike Relm and a special guest headliner will provide musical entertainment, while CODAME Art + Tech will treat us to some trippy interactive installations. Know someone who can't attend the conference but wants to join you at the afterparty? We are opening up a few tickets to the public for this event; you can grab those here.

Follow @githubuniverse for updates and live video during the show, and use the hashtag #githubuniverse to share photos and thoughts from the conference floor.

If you haven't got your ticket yet, you'd better get it quickly. We're almost sold out!

We can’t wait to see you there :rocket:

Attach files to comments

You've been able to attach images to issues and pull request comments for awhile. Now we've expanded that feature to include:

  • Microsoft Word .docx
  • Microsoft Powerpoint .pptx
  • Microsoft Excel .xlsx
  • Text .txt
  • PDF documents .pdf

File attachments screenshot

Just drag and drop the files into the comment box and they will appear in your comment.

Embracing Open Source: GitHub Universe Speakers Tell Their Stories

featured speaker blog header

If you’re inspired by collaborative software design, be sure to check out these GitHub Universe sessions, which will explore how open source continues to change the way developers build great software.

Building Communities Around Open Source Security Software

For the past year, Facebook has been building community trust and fostering empathy through the use of an open source security tool. Christine Abernathy and Teddy Reed will be sharing their experiences around osquery and their open source communities.

Christine Abernathy is a Developer Advocate on the Open Source team at Facebook, with previous Developer Advocacy roles with Parse and Facebook Platform. Teddy Reed is a Security Engineer at Facebook developing production security tools. He is passionate about open source and collaborative engineering when scale, resiliency, and performance enable defensive and protective software design.

Open Source Principles for Internal Engineering Teams

The open source process has proven adept at producing high quality software that can be built, maintained, and adapted at scale. Join Brandon Keepers, GitHub’s Open Source Evangelist, as he examines how “inner-sourcing”—adopting open source philosophies and workflows—can improve internal engineering teams.

An engineer by trade, Brandon Keepers believes open source is a fundamental to building great products, and great products sustain healthy open source projects.

The Importance of Positive Feedback

In the tech community, positive and constructive feedback is the foundation upon which we build a safe environment to learn, teach, and improve code skills. One Medical Group’s Enrique Mogollan explores why these environments have made the Ruby community attractive for many people.

Enrique Mogollan's experience as software engineer ranges from backend and web applications to integrations and open source projects. He believes that collaborative environments are the key to promote quality code and improve software design.

Check out the full schedule of sessions here. We hope to see you next week!

Teachers, manage your courses with Classroom for GitHub

Classroom for GitHub is available now, making it easier than ever to teach with GitHub.

Classroom for GitHub screenshot

Thousands of teachers use GitHub in their courses every day. They distribute starter repositories, give feedback on pull requests, and collect assignments. In addition to helping teachers provide a better learning experience, teaching with GitHub gives students early exposure to software development best practices like version control, issue tracking, and code review.

Classroom for GitHub makes typically tedious administrative tasks (like creating repositories and managing access for large courses) simple and streamlined.

How it works

Classroom for Github automates repository creation and access control, making it easy for teachers to distribute starter code and collect assignments from students.

Assignments are the core of Classroom for GitHub. Teachers can easily create an assignment and distribute it to students using a private invitation URL. Optional starter code can be provided for individual or group work. It's even possible to delegate assignment creation and management to co-teachers and teaching assistants by adding them as organization administrators.

Get started

  1. Create an organization
  2. Request free private repositories for your classroom organization (optional)
  3. Create your first assignment with Classroom for GitHub

Open source

Classroom for GitHub is open source and we'd love to have you participate. Check out CONTRIBUTING.md for information on how to help.

Shout out to GitHub Summer of Code student, Mark Tareshawty, from The Ohio State University for his work on Classroom for GitHub.

Thanks to our GitHub Universe Sponsors

We wanted to involve sponsoring companies in memorable ways at or our inaugural GitHub Universe conference. On October 1-2, you can expect to enjoy art installations, delicious coffee and juice, comfortable lounges and entertainment contributed by these organizations. Check them out!

sponsorlogos

The official conference after-party at the Village, featuring interactive installations by CODAME, music by Mike Relm and surprise guests, is brought to you by Huawei.

Lounges are sponsored by Heroku, Microsoft, and AWS. Make sure to thank them when you’re kicking back and enjoying some quiet time on a comfy couch.

Our installation sponsors, Travis-CI, Waffle.io, Target, GitKraken, and Digital Ocean will integrate visual art into your GitHub Universe experience. Look for their logos in eye-catching designs around Pier 70. As our scavenger hunt sponsor, Twilio will engage you in an interactive search for clues that unlock one-of-a-kind prizes.

Compose.io will keep you caffeinated with delicious Ritual coffee. Stack Overflow will provide a gorgeous custom-branded notebook so you can jot down all the pearls of wisdom delivered to you by our great roster of speakers.

Appnovation and Cisco are also supporting Universe as community sponsors.

Interested in grabbing a last minute sponsorship? Take a look at the prospectus and shoot us an email to discuss how we can partner with you to make GitHub Universe even better.

You still have a chance to grab a ticket! Get yours now before we sell out.

GitHub implements Subresource Integrity

With Subresource Integrity (SRI), using GitHub is safer than ever. SRI tells your browser to double check that our Content Delivery Network (CDN) is sending the right JavaScript and CSS to your browser. Without SRI, an attacker who is able to compromise our CDN could send malicious JavaScript to your browser. To get the benefits of SRI, make sure you're using a modern browser like Google Chrome.

New browser security features like SRI are making the web a safer place. They don't do much good if websites don't implement them though. We're playing our role, and encourage you to consider doing the same.

You can read more about Subresource Integrity and why we implemented it on the GitHub Engineering blog.

Complete Schedule for GitHub Universe

You've been asking for it, and we're ready to share the complete GitHub Universe schedule. Each day will start off at 8:30AM with registration and breakfast. You'll want to be in your seat by 10AM for the opening keynotes from GitHub:

  • Chris Wanstrath, Co-founder and CEO
  • Nicole Sanchez, VP of Social Impact

Then you can hear from some of the industry's best thinkers in our featured sessions:

  • Dr. Yvonne Pendleton, Director of SSERVI, NASA
  • Kellan Elliot-McCrea, former CTO, Etsy
  • Dr. Michael B. Johnson, Pre-production Software Architect, Pixar
  • Anil Dash, Co-founder, Makerba.se
  • Tiffani Ashley Bell, Co-founder & Executive Director, Detroit Water Project
  • Marianna Tessel, SVP of Engineering, Docker
  • Marco Annunziata, Chief Economist, GE

Packed into both days are 24 breakouts featuring people from across the tech community. Whether you want to learn best practices on collaboration directly from GitHub or hear how some of the best companies are building great software, Universe will keep you busy. Here are a handful of sessions you can look forward to:

  • Democratic Deploys at Airbnb from Igor Serebryany, who will discuss Airbnb's process for shipping code efficiently and safely
  • Building Communities Around Open Source Security Software from Christine Abernathy and Teddy Reed at Facebook.
  • Pull requests, code review, and the GitHub flow from GitHub's own Brent Beer
  • Metrics-driven Development from Spotify engineer and Python Foundation Board member, Lynn Root
  • Keep your code secure with GitHub Security Best Practices from GitHub Services Engineer, Matt Duff

That's a sample of the full schedule. Also hear from speakers from Autodesk, GE, Target, Bloomberg, and Mozilla. Developer tool fans won't want to miss Josh Kalderimis, CEO of Travis CI, or James Smith, CEO of Bugsnag. You can even learn how to build desktop apps using web technologies with Electron.

And, of course, you are invited to an afterparty on Thursday, October 1st, with three floors of music, food, beverages, and plenty of space for socializing.

We have a couple other tricks up our sleeves that you'll just have to come to Universe to see. We hope you'll join us on October 1st and 2nd for our first conference to celebrate the GitHub community. If you need help getting to Universe, don't forget about our scholarship program.

Tickets are still available, we'll see you in a couple weeks.

Automating code deployment with GitHub and Azure

There are many cloud services that support automated code deployment from GitHub. In this post, we're going to be taking a look at connecting a GitHub repository to a Microsoft Azure instance. When working with continuously delivered projects like web apps, this connection can be especially helpful for pushing out things like critical bug fixes; but it also removes barriers that might be keeping new features in a holding pattern on stale branches.

And you can set everything up in under 10 minutes.

Prerequisites

You'll need a running web app instance on Azure before you get started. If you need help setting one up, there are quick video tutorials available in the Azure App Service documentation.

When your app is running, browse to its dashboard.

Your Dashboard

Step 1: Connect your App to its Repository on GitHub

In the All Settings menu on the right, choose the option to set up Continuous Deployment. Then click the Choose Source blade and choose GitHub.

GitHub may ask if you want to authorize Azure to have access to your accounts. It's safe to click Authorize application.

Once authenticated, Azure will ask you which repository and which branch to deploy to your app.

Select your GitHub repository from the list and make sure you are deploying the master branch. Then click OK to finish up.

Choose a repository and branch

Azure will show you that your repository has been linked and will automatically begin deploying your code to your site.

When you see the green Active Deployment status, you're all set.

Your Repository is Linked

Step 2: There is no Step 2

That's it. If you browse to your app's URL, you'll see your app is now live on the Internet.

With everything connected, GitHub notifies Azure of any changes to the branch you specify (usually master) and Azure automatically deploys them for you. This means anytime you merge a Pull Request into master on GitHub, a single click delivers all of that new work to the people who use your app.

Merge a Pull Request

If you use Microsoft Azure to serve your app, this setup not only makes it easy to push out things like bug fixes; it also stimulates new development by removing barriers and helping you focus on shipping great code.

Additional Resources

GitHub Universe: Diversity Partners and Scholarship Program

universe_header

As VP of GitHub's Social Impact team, I am thrilled to share some news about our upcoming conference.

Conferences like GitHub Universe represent an opportunity for people from all over the tech community to come together to explore the challenges faced by software developers worldwide. When a wide range of points of view are represented, the value of the conversation increases.

However, the average cost of a conference ticket can create a barrier to entry for some, and the Social Impact team believes it is critical to break down those barriers for groups that have been excluded from tech and the open source community.

We couldn’t be prouder to have partnered with the following organizations to distribute GitHub Universe tickets:

We’ve also instituted a scholarship program to make tickets available on an individual basis to those who might otherwise have difficulty attending the conference. If you’d like to apply for a scholarship ticket, please send an email to socialimpact@github.com, detailing how you will benefit from going to GitHub Universe.

Want to help out? Head over to the registration page and buy a scholarship ticket that will then be donated to a worthy applicant.

I hope to see you in the audience at my GitHub Universe session! Don't forget, if you want to book a hotel room at the discounted rate, today is the last day to do it, so grab your ticket and your room now.

Easier feeds for GitHub Pages

If you publish a blog using GitHub pages, it's now easier for others to subscribe to updates. The Jekyll Feed plugin, now available to all GitHub Pages sites, can automatically generate an Atom (RSS-like) feed of your most recent posts.

While it's always been possible to generate feeds using hand-written XML, the Jekyll Feed plugin includes a battle-tested template that handles things like encoding issues and relative URLs, allowing you to concentrate on what matters: your content.

For more information, including installation instructions, see the Feeds for GitHub Pages help article.

Happy syndicating!

Protected branches and required status checks

It’s all too easy to force push to the wrong branch, overwriting someone else’s changes with your own. Sometimes it results in losing work (unless you know how to undo almost anything in Git).

Over the next few weeks we’ll be rolling out a new feature called Protected Branches which gives repository administrators the ability to disable force pushes to specific branches. When it’s enabled for your repositories you’ll be able to go to the Branches tab in repository settings and protect branches:

Repository Branches settings page

In addition to blocking force pushes, a protected branch can have required status checks. Required status checks make integrations that use our Status API enforceable and you can disable the merge button until they pass:

Pull Request merge area with required status checks

When using required status checks, your branch must be up-to-date to ensure your tests will pass after merging. The new “Update branch” button lets you merge the latest changes from the base branch of the Pull Request with one click.

Pull Request merge area with Update branch button

Something went wrong with that request. Please try again.