Thanks go to John C. Young of igsobe.com for providing this server, and to Eric Mulcaster for letting me run free on it to set this up.
------------------------------------------------------------------------------
This is a Git repository that contains the entire Puppy Unleashed Tree, as of Puppy 4.1.2. I will update it to 4.2 shortly after it is released.
The intention of this is that it will become the means by which future Puppies are created, beginning with 4.2.1.
Reason? People will be able to see what is going on much sooner, rather than waiting for alphas to be posted. Just today, for example, Zigbert was trying to help debug a problem WhoDo is having, but not being able to see exactly what files WhoDo is using was impeding his efforts. If we had already been using Git by now, he'd have been able to just look and see for himself.
Another thing it can do is answer the question, "What exactly has changed since version XXX?" It will only be able to back to 4.1.2, of course, but from there on it will log every change. You will be able to run git diff --stat puppy-412-release..puppy-420-release to get a list of every file added, removed, or modified. Leaving off the --stat would give you actual 'diff' output. It can go between versions too.
It can also recreate the actual files from any given time.
Unlike SVN, this won't require us to pick an "elite" group who is allowed to upload. Instead, only one person can do that. At the moment, that person is me, because I'm the one who set it up. But I will shortly be turning it over to WhoDo, as soon as he releases 4.2 and I get the tree updated to match. If/when he eventually steps down from being Coordinator, control would be passed on to the next Coordinator.
It does still make it easier for other people to contribute. Like SVN, it will automate the process of keeping your working tree up to date, even if you have a bunch of local modifications. Unlike SVN, if you make a commit, it is stored on your local drive. So anybody can make commits, and they're all private.
When a feature you're working on is finished, you can submit it to WhoDo for inclusion in the main tree by using git fomat-patch to output patch files, which you send to WhoDo. Then, he looks through them, applies them with git am, tests them, and then either discards them or pushes the changes out to his public tree (the one you pull from).
An alternative to sending him patches is to set up your own server to host your own public tree. Then when you're ready to submit it, you send WhoDo a request to pull from your tree, along with the address to it and the name of the branch he should use. He then has his local repository pull the changes from yours, tests, and either discards or keeps the changes, as above.
------------------------------------------------------------------------------
What does all of this mean for You?
It depends on who you are.
If you are WhoDo, it means that in the short term, you're in for a bunch of learning and probably some headaches. You'll have to learn a new tool. But I'll help as much as needed, so don't worry. In the long term, it means you won't have to wait so long for people to be able to catch mistakes you make. It also means that you'll be more likely to be given changes in the form of patches, and will be able to apply them easily. It means that the burden of not overwriting everybody's work with everybody else's work will be lessened, shifted in part to the other people, and in part to Git itself.
If you are a frequent contributor, it means that you'll be able to check that your work was implemented properly without having to wait for an alpha release. It means that you'll be able to see how everybody else's work is implemented, so you don't have to guess. It means that if a file changes while you're working on it, Git can probably merge the change into your copy automatically, and if not, you'll at least be notified so that you can fix it now, rather than submitting it and finding out later that you overwrote somebody else's work and need to figure out how to fix it. It also means that this same protection applies to your own work, so other people will be much less likely to overwrite it. It means that you can easily see what has changed between any two points. It also means that you will be submitting patches or pull-requests to WhoDo, rather than packages or instructions on doing things. That has an important benefit: you can be fairly sure that the changes will be applied properly, as long as they don't conflict with something else WhoDo has applied since the last time he pushed, or since you submitted the change (this assumes that you had the common sense to pull the latest updates from WhoDo before submitting the patch). It also means that if there is a conflict, WhoDo might throw out your change and ask you to re-do it after pulling the latest state from his public tree - which is a good thing, because you should know much better than he how to apply your change.
If you are a Puplet creator who prefers Unleashed over remaster scripts, it means you now have the option of using an Unleashed tree in a Git repository, which in addition to the normal benefits that offers any project, you'll also theoretically be able to keep your custom Puppy up to date with the latest developments in the Official Puppy. (I'm unsure how well this will work out in the real world, especially for long term projects, but I definitely intend to find out - I'll be reviving Pizzapup shortly).
If you are a bleeding edge addict, you will be able to get the latest state as of the last time WhoDo ran git push.
If you are a regular user, who cares nothing for development nor bug testing and only wishes to download an iso, burn it, and boot it, then this doesn't mean much for you, at least directly. Indirectly, it may mean that you'll receive a better product due to the predicted improvement it will have in the developer's ability to implement things properly and detect bugs sooner.
------------------------------------------------------------------------------
Quick Start
If you want to set up a local tree to play around with, you need to have a linux partition with about 2 GB free. You also need to be able to handle a roughly 300 MB download. From the location you want the repository downloaded to, run this:
Code: Select all
git clone git://git.puppylinux.ca/puppy.git
Also, a difference from the stock 4.1.2 tree is that this one actually works, because I added the missing depmod program to boot/.
Otherwise, it pretty much works how you'd expect an Unleashed tree to work inside a Git repository.
Note that when you start using it from a cold start, it will be a little bit slow. This is inevitable with such a large project. After you run a couple commands it will become "warmed up" and run at a good speed.
One thing that will just be slow period is git gc, which does some compression and cleanup. Running it now and then can result in a significantly smaller repository though (I've seen it do as much as a 30% decrease after many changes had been made since the last run). It will happen automatically when you run certain commands if it is needed (like merging).
------------------------------------------------------------------------------
More Info
There is plenty of Git-specific documentation on the web if you need it. I've also written a lot of basic documentation concerning this server at the http://git.puppylinux.ca/ site, but I'm sure that it's probably still insufficient. Let me know of any such inefficiencies and I'll rectify them.
One thing it's short on is instructions for proper usage, best practices, etc. There is a very good reason for that: this thing is mostly unused so far. I plan to start working on a new Pizzapup soon (like, tomorrow if nothing comes up), and I'll do that in my own copy of the repository. I'll be maintaining a public tree for that project on my old computer. I haven't decided the exact repo name yet, but it will probably be something like git://pizzasgood.no-ip/pizzapup.git.
If you have a problem with the site's green-ness, I am willing to tone it down a little. I do like it though. Same goes for any other problems you have with it, like the method of highlighting commands. I like it, but I don't know how well other people will.
EDIT: Actually, I just had a good idea. I've replaced the green "outer" background with a blue one. Now it looks even better than it did before.
Update 2009-03-22: Corrected typo.