How do I build from the trunk of the jsoup github project? - github

I've realised that the java project I'm working on is affected by this bug: jsoup Google Groups
I don't think this sort of question is really suitable for posting in the group discussion and I don't really want to sit and wait for the next release so could somebody be kind enough to explain what implementing this fix ASAP would entail? How does one build from the trunk of the project?
Just to be clear, I would be looking to end up with a patched version of the jsoup .jar for inclusion in my project.
Thanks as always!

The reply I got from on #git IRC:
jsoup github download link
You can either use git to archive the repository, or use github's download functionality. After which you will need to compile the jar from the source there. If you choose to use github, when you click download pick either of the .tar.gz or .zip buttons next to "Branch: master"
Lesson learnt: Try IRC first!

Related

how to turn off GitHub generated (and broken) tarballs when I do a release?

I am an admin for the PIO project (https://github.com/NCAR/ParallelIO), a set of C/Fortran libraries which is built with autoconf/automake/libtool.
When I do a release, GitHub generates a tarball and a zip file of the repo. These are useless because they have not been generated by "make dist" which puts together the actual tarball.
I can add the actual tarball to the release page - is there any way to remove the broken ones that GitHub puts there? As it is, I just tell users not to use those, but that's not a great solution.
Another solution, used on some projects, is to commit the autotools-generated files to the release branch, so that GitHub releases are functional. That seems lame but might be the best option.

how to download source code of cryengine V?

I have heard that cryengine V provides access to the full source code, but I can't find where to download the source code.
Anyone can tell me how to download the source code of cryengine V?
There are two ways to get CryEngine's source code from Github:
Download specific revision. For this, visit CryEngine public repository on Github, find a large green button on the right titled "Clone or download", and in a dropdown menu choose "Download ZIP". It will download a zipped version of the source code for you.
Via Git client. For that, install Git from its official site. If you already have Git installed, use some Git GUI client to clonse the repository, or create a directory, cd to that directory in console/terminal, and run command:
git clone https://github.com/CRYTEK-CRYENGINE/CRYENGINE.git
This way will also allow you to make pull requests to send fixes back to Crytek if you like.
PS. In order to get SDKs which contains much of the Sandbox content as well as samples, you possibly would also like to download GameSDK repository.
PS2. These instructions will let you get the latest version of CryEngine. In order to download specific one, move to releases tab on Github website.
There you go: https://www.cryengine.com/get-cryengine
Just register and you get the engine downloader.

Should I include configure and makefile in a github repository?

We recently moved from subversion to git, and then to Github, for several open source projects. Github was nice in that it provided a lot of functionality. One of the things I particularly like is the ability to download tags as zip or .tar.gz files.
Unfortunately Github recently discontinued downloads. That shouldn't be a problem because of the ability to download tags. However in the past we have not put a Makefile , configure script or any other autoconf-generated files into the repo because they get lots of conflicts when people merge.
What's the proper way to handle this?
Should I put autoconf and automake-generated files in the repo so people can download tags directly?
Or should there be a bootstrap.sh file and people are told to run that?
Or should I just do a make dist and put that into the repo?
Thanks
Publish the output of make dist via GitHub Releases
Your first option—putting the Autoconf- and Automake-generated files into the repository—is not a good idea. It's almost never beneficial to store generated files in source control. In this case, it's going to pollute your history with a lot of unnecessary and potentially conflicting commits, particularly if not all your contributors are using the same version of Autotools. Your third option—checking in the output of make dist—is a bad idea for exactly the same reasons as the first option.
Your second option—adding a "bootstrap" script that calls Autoconf and Automake to generate the configure scripts—is also a bad idea. This defeats the entire purpose of Autotools, which is to make your source portable across systems—including those for which Autotools is not available! (Consider what would happen if someone wanted to build and install your software on a machine on which they don't have root access, and where the GNU Build System is not installed. A bootstrap script is not going to help them because they'd first need to make a local installation of Autotools and possibly all its dependencies.)
The proper way of releasing code that uses Autotools is to produce a tarball with make dist (or better yet, make distcheck, since this will also run tests and do other sanity checks), and then publish this tarball somewhere other than the source repository.
Your original question, from April 2013, states that GitHub discontinued download pages. However, in July 2013, GitHub added a "Releases" feature that not only pre-packages your source tags, but also allows you to attach arbitrary files to each release. So on GitHub, the Releases page is where you should publish your make dist tarballs (and preferably also the detached GnuPG signatures of them).
Basic steps
When you are ready to make a release, tag it and push the tag to GitHub:
$ git tag 1.0 # Also use -s if desired
$ git push --tags
Use your Makefile to produce a tarball:
$ make dist # Alternatively, 'make distcheck'
Visit the GitHub page for your project and follow the "releases" link:
You will be taken to the Releases page for your project. The first time you visit, all you will see is a list of tags and automatically produced tarballs from the source tree:
Press the "Draft a new release" button.
You will then be presented with a form in which you should fill in the Git tag associated with the release and an optional title and description. Below this there is also a file selector labelled "Attach binaries by dropping them here or selecting them". Use this to upload the tarball you created in Step 2 (and maybe also a detached GnuPG signature of it).
When you're done, press the "Publish release" button.
Your project's Releases page will now display the release, including prominent download links for the attached files:
If you don't want to use GitHub Releases, then as pointed out in a previous answer, you should upload the tarballs somewhere else, such as your own website or FTP site. Add a link to this repository from your project's README.md so that users can find it.
The second is better: you want any user of your repo to be up and running as fast as possible, re-generating what he/she needs in order to build your program.
Since Git is very much a version control for text (as opposed to an artifact repo like Nexus), providing a way to generate the final binary is the way to go.
When you cut a release, upload the result of make distcheck to your project's download page: it's a makefile target that builds the tarball and verifies that it installs, uninstalls, passes tests and other sanity checks. Github being wrong-headed isn't an excuse: create a tree like this in your repo:
/
/source
/source/configure.ac
/source/Makefile.am
/source/...
/releases
/releases/foo-0.1.tar.gz
/releases/...
For developers, you should not have generated files in source control. Many modern autotooled projects bootstrap fine off an invocation of autoreconf -i.

How do I post a "release" on github?

I have a few open source projects that I manage. I've been posting the .tar.gz releases for them to a directory on a webserver I run. I would like to post them to github. Is there a simple way to post the release and a signature for the release? My users aren't sophisticated enough to download the release with git; they want to download and install a .tar.gz file. Some of them may even want to verify the signature.
GitHub have just announced their new "GitHub Releases" feature, which sounds like exactly what you're after:
https://github.com/blog/1547-release-your-software
One nice option github supports is tagging, and automatic tar.gz/zip creation based on those tags. It makes publishing releases really easy.
http://learn.github.com/p/tagging.html
On the commit/branch that you'd like to mark as a release, do
git tag <release_tag>
then
git push --tags
then, on github.com/user/repo/tags, you can see all tagged releases. You can link straight to those files, like in jimw's answer.
Other awesome option might be distributing from http://bintray.com. It integrates great with GitHub and gives you so much more when distributing binaries.
I you'd also like to upload other kinds of files (compiled binaries, ...) and edit github releases from the commandline with a rather easy-to-use tool, I made something for that. It's called github-release. It's basically a user-friendly abstraction over the Github releases API. It's written in Go so I took the liberty of cross-compiling it for OSX/linux/windows/FreeBSD, and you can download the binaries from the releases page, of course.
DISCLAIMER: I am the author.
You can fetch a tarball of any tag like so:
https://github.com/visionmedia/express/tarball/2.5.4
There are a few utilities to do what you need.
github_upload (Ruby) : https://github.com/github/upload
App::gh (Perl) : https://metacpan.org/module/App::gh::Command::Upload
Take your pick :)
Check out the GitHub Downloads section - no need for git at all to download files from there.

Bitbucket: Bind a file from tip to be download-able

I am working inside a private repository, and collaborate with my friend, who are not very friendly with SCM and stuff. All he need is to monitor the latest release from my development, which is 1 single executable file.
I was wondering instead of cloning the whole repo each time he want to get the latest changes (sometimes my changeset can consists of several large binary files that only being used upon development, not testing). Can I bind the executable file into the Download section in BitBucket?. So that everytime I build my project, the executable file will appear in the Download section and he can download it right away.
For now all I can see from Bitbucket's download section is just the manual upload and Tag/Snapshot download, which I presume will pack a certain changesets into a compressed file. Is there any chance I can do this?.
Thanks.
If your executable file is checked into the repository, you can link to it at a specific revision:
https://staging.bitbucket.org/<username>/<repo>/raw/<revision>/file.exe
For example, this link will always give you the latest stable hg(1) man page from the Mercurial repository:
https://bitbucket.org/mirror/mercurial/raw/stable/doc/hg.1.txt
This would give you latest README on the default branch from the Django repository:
https://bitbucket.org/django/django/raw/default/README
If your executable isn't checked into the repository (some prefer not to check in build artifacts), you'll need to manually upload them in the downloads section of your repository. There isn't a REST API for creating project downloads at the moment.
Would giving your friend an archive of the tip work? Try this URL:
https://bitbucket.org/<username>/<project>/get/tip.tar.gz
#Idan's suggestion might already work for you, but if the archive is too big, you could set up an extra repository for binaries which automatically gets updated, committed and pushed by your build process. Then your fellow developer could download a comparatively small tip archive as suggested by Idan.
In addition to Idan's answer:
To fetch the latest version from the 'default' branch:
https://bitbucket.org/<username>/<project>/get/default.tar.gz
You can replace 'default' by any other branch name, tag name or changeset (if you know it).