Skip to content

Instantly share code, notes, and snippets.

@defunkt
Created September 11, 2011 08:11
Show Gist options
  • Save defunkt/1209316 to your computer and use it in GitHub Desktop.
Save defunkt/1209316 to your computer and use it in GitHub Desktop.
Turn a github.com URL into a git.io URL.
#!/usr/bin/env ruby
# Usage: gitio URL [CODE]
#
# Turns a github.com URL
# into a git.io URL
#
# Copies the git.io URL to your clipboard.
url = ARGV[0]
code = ARGV[1]
if url !~ /^(https?:\/\/)?(gist\.)?github.com/
abort "* github.com URLs only"
end
if url !~ /^http/
url = "https://#{url}"
end
if code
code = "-F code=#{code}"
end
output = `curl -i http://git.io -F 'url=#{url}' #{code} 2> /dev/null`
if output =~ /Location: (.+)\n?/
puts $1
`echo #$1 | pbcopy`
else
puts output
end
Copy link

ghost commented Oct 16, 2013

I notice you can pass codes, where can I find out what codes can be passed and what they do?

@jasonm23
Copy link

Any chance that githubusercontent.com will be handled by git.io too?

@rsvp
Copy link

rsvp commented Mar 29, 2015

This will handle raw code: https://git.io/git.io and insure uniqueness -- written in Bash though.

Copy link

ghost commented Jan 14, 2016

the urls has changed. it's now a post to git.io/create but the code option no longer seems to work 😭 no more vanity urls

@basicallydan
Copy link

@branderxero are you sure /create works? Has the request structure changed in any other way? I can't get it to work. Just keeps giving me a 301 pointing to whatever URL I use.

@basicallydan
Copy link

Okay, I've had some success. /create doesn't make any difference, and you can still use the code option but the request has to be secure. https://git.io

@dwijnand
Copy link

@basicallydan Are you sure you can still use the code option? Can you provide a complete example? Because I'm finding that I can't..

@tanepiper
Copy link

@basicallydan @dwijnand - Yep seems code no longer works. A bug was reported in my library (https://github.com/tanepiper/node-gitio) and I can't get it to work with new urls (test pass because it's older urls that were set)

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment