Question

I've got a painfully simple jQuery plugin that I've written and placed on github. I am using Github for Windows and the website itself to manage the project.

Unfortunately, if I try to include any of the .js or .css files that I've uploaded there, through the Raw links, it fails in my browser due to the MIME-type being plain/text.

So, for the last couple of hours I've been researching how to get a copy of the files, through github, that people (including myself) can link to. The first step seems to be creating a project page (gh-pages branch)... that much I have grasped.

However, all of the material I've found so far either expects you to have a UNIX-based system, or do some console-based trickery:

Examples: GitHub, SO, SO

Now, there must be a straightforward way to simply make these source files available for inclusion. I went through the automated steps of creating a 'project page' and now I'm presented with another branch that is claiming to be behind the 'master' branch, but I can't see what I'm supposed to do next. It's not even clear to me why on earth I'm required to make another branch. This whole thing seems far more complicated than it needs to be.

So, to recap:

  • I've created a branch in Github (using Windows app and website)
  • I can manage that, and update my files, without incident
  • I am unable to include the .js and .css files using a 'raw' links
  • I want to be able to include those files in a page
  • I'd like to do this through Github for Windows, or on the site itself

If anyone could help walk me through this, I'd appreciate it. Also, I'd expect that A LOT of others would as well.

EDIT: Here is an example of a well-known Github project that has its files available through Github:

Select2: http://ivaynberg.github.io/select2/select2-3.4.2/select2.js

EDIT2: Okay, conceptually, I now understand why I have to create a separate branch, in order to share the files - as the source control aspects of Github aren't meant to act as a CDN, the project page simply provides a public website where you can place your files. So the question now becomes: How do I put my files from the master branch into the gh-pages branch? I'm not worried about automating it or anything right now, all I want is access to the directory structure so I can place files in there. I've tried syncing and re-syncing my branch with Github Windows, but it tells me that there's nothing to get from the gh-pages branch, even though it's "10 commits behind". What is going on?

EDIT3: Added my own answer, for what I've come up with (so far).

Was it helpful?

Solution

As mentioned, there's lots of information out there for people who are using console-based Git software. However, I could not find a single piece of info on how to do this solely through Github Windows. Well, here is the solution:

Process:

  • Create a project page, as described here: https://help.github.com/articles/creating-pages-with-the-automatic-generator

  • Unfortunately, they only have console-based solution for getting a local copy. So here's how the rest of this works in Github Windows... (assumption: project name is myproject, consisting of myproject.js and myproject.css)

  • After the page has been created (takes a few minutes), open up Github Windows.

  • In Github Windows, open the repository for the project. On the top menubar it has "in sync", "master", "tools". Click on "master" and switch to "gh-pages" branch - SO example.

  • When you do this, the folder C:\Users\YourName\Documents\GitHub\myproject will now display the files for the "gh-pages" branch. If you click "master", in Github Windows, it will change the folder structure to once again represent the "master" branch. This is what confused me earlier, you can't see the directory structure for both branches at the same time.

  • Select the "master" branch in Github Windows.

  • In Windows Explorer, copy myproject.js and myproject.css into a separate directory (e.g., c:\temp).

  • Go back to Github Windows and select the "gh-pages" branch.

  • Go back to Windows Explorer and cut the files you put into c:\temp and paste them into a directory like C:\Users\YourName\Documents\GitHub\myproject\myproject-1.0\

  • Go back to Github Windows, and you'll see "2 files to be commited". Type in your commit message and click 'Commit'.

  • Then click 'Sync'.

  • You can now include these files in your webpages, using a URL like: http://yourname.github.io/myproject/myproject-1.0/myproject.js

Obviously this is a huge pain in the ass to do it this way, if you expect to be updating the source file(s) regularly. So obviously an automated approach would be most ideal. There is an answer for this on SO here, unfortunately it involves UNIX-based scripting which I have zero knowledge of (and, truthfully, no interest in learning just for this). If anyone comes up with a more efficient way of doing this, using only the GUI-based tools, I'm sure myself and many others would be interested in hearing about it.

EDIT: This solution is obviously usurping Github's intended way of doing things, as when I click on the "gh-pages" branch on the github website it tells me that it's "5 commits ahead and 11 commits behind" the master branch, even though they have the same files. So, again, if anyone else has a better GUI-based solution to this problem, I'm all ears.

OTHER TIPS

Git(hub) software for Windows is the buggiest thing I've ever used (well, besides Windows itself). Back when I used Windows, I could hardly get anything to work with Git at all.

But, anyways, to answer your question, if you open a command prompt and type in

git checkout -b gh-pages

(if it complains about branch gh-pages already existing, remove the -b.)

it should switch the branch. Then, you can launch notepad++ or whatever text editor you use (you might have to do it from the terminal, I can't remember), add the file you want, and then type in (in cmd):

git add .

This recursively adds all files in the folder to Git.

git commit -m "Add file for easy user download"

This adds the commit message.

git remote add origin git@github.com:yourusername/yourrepository.git

This adds the Github repo so you can push to it

git push origin gh-pages

This pushes your changes to Github.

And, you're all set!

You might want to read this on Git branching.

Licensed under: CC-BY-SA with attribution
Not affiliated with StackOverflow
scroll top