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.

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.

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:

git clone git://git.puppylinux.ca/puppy.git

That will create a puppy/ directory. Inside is the puppy-unleashed/ directory of an Unleashed tree. It is mostly standard, but there are a couple modifications. Mainly with respect to device files and empty directories, neither of which can be tracked by Git, so they are dealt with through extra scripts tied into createpuppy. Also, the package directories should no longer be manually renamed when small modifications have been made. A script will sort that out itself when building Puppy, temporarily renaming them to have the distinguishing version number so that the .pet packages don't overwrite eachother. That has also been tied into createpuppy, so you don't have to worry about it much.

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).

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.

FYI, I'm mainly posting this now just to announce it, providing a heads-up that this big change is approaching and giving people a chance to play around with it. There isn't currently a whole lot to interest people yet, besides the devs who may want to get a head start at learning it. It will get more interesting for other people later, when we start using it to develop Puppy 4.2.1 and (if all goes well) beyond.

And please don't anybody freak out about how hard you believe Git to be. I'm more than willing to help anybody understand things, at least as far as I understand them myself. The learning curve might be a little bit steep, but it's definitely worth it. Git's slicker than butter._________________Between depriving a man of one hour from his life and depriving him of his life there exists only a difference of degree. --Muad'Dib

Woof and Unleashed are booth systems for building a Linux distro. So if we eventually switch to using Woof for Puppy development, we should be able to put Woof into a Git repository just like I did with Unleashed.

I haven't had a chance to use Woof yet, so I don't really know how it's laid out and how its usage would mesh with Git. I'm on Spring Break this week, so I was hoping to play with Woof before school starts up again on Monday, but so far I haven't had a chance. I visited my grandparents over the weekend, did homework on Monday, and spent Tuesday through Thursday working on Git and writing documentation. So today I'm taking a break to start on Pizzapup and then play some Dwarf Fortress (there is a native Linux version now, which runs a a lot faster than using the Windows version in Wine). But maybe I'll try Woof tomorrow._________________Between depriving a man of one hour from his life and depriving him of his life there exists only a difference of degree. --Muad'Dib

Alpha 3 will be out 23/24 - just after your break
Woof is gaining a lot of interest and unleashed may be left behind.
Things are still unfolding . . .
One of the possibilities is code (if woof makes more use of Vala/Genie)
alongside programs on the Git system _________________Raspup for Raspberry Pi In Alpha Puppi testing NOWNEW Slackware Current ScPup 32 and 64bit

Oh yeah. I hinted at that in one of those pages I wrote, but forgot to mention it here.

What I'm thinking is we could host a public tree for the internationalization team. It would be running in parallel to the main tree. If WhoDo updates the main tree, they can pull it into theirs, and when they finish anything significant, they can have WhoDo pull it into the main tree. The internationalization team can basically mirror the development process that will be used by WhoDo for overall Puppy, but on a smaller scale focused on internationalization. So rather than a bunch of small updates getting sent to WhoDo, they'd be sent to whoever is in charge of internationalization, and then that person would send WhoDo larger chunks.

That can be done just fine without the tree being hosted, but putting it on the server would make things easier, IMHO._________________Between depriving a man of one hour from his life and depriving him of his life there exists only a difference of degree. --Muad'Dib

I made a typo. It should be git://git.puppylinux.ca/puppy.git, not git://git.puppylinux.ca/git/puppy.git. Sorry about that._________________Between depriving a man of one hour from his life and depriving him of his life there exists only a difference of degree. --Muad'Dib

Not yet. I was setting this up at the same time that everybody else was off doing 4.2 the "old" way. Now that I have it "finished", I'm just waiting on 4.2 to be finished. Once WhoDo uploads the Unleashed packages for it, and I get some free time, I'll update it to match 4.2. The update will be a little clunky, doing a lot of things at once, since I'm not doing it as we go. But then when we do 4.2.1 or 4.3, we can use Git from the get-go, so that the updates are small._________________Between depriving a man of one hour from his life and depriving him of his life there exists only a difference of degree. --Muad'Dib

I'll set one up when I update the tree to 4.2 (which has to wait until the first weekend after WhoDo finishes uploading the files for 4.2 - still need the unleashed-core and the new .pet packages before I can do that).

I'll need to know who to put in charge of it though._________________Between depriving a man of one hour from his life and depriving him of his life there exists only a difference of degree. --Muad'Dib

You cannot post new topics in this forumYou cannot reply to topics in this forumYou cannot edit your posts in this forumYou cannot delete your posts in this forumYou cannot vote in polls in this forumYou cannot attach files in this forumYou can download files in this forum