On czwartek 13 marzec 2003 02:17 pm, John Levon wrote: > On Thu, Mar 13, 2003 at 02:12:07PM -0500, Kuba Ober wrote: > > I was very explicit about things. First of all, if you are wearing all > > the hats yourself -- you're a developer, reviewer and administrator of > > the project, the only thing you need to do to make a new change and > > integrate it to the master server is: > > This is about 10 lines too long. > > > $ ae_p lyx.1.4.1 > > # once per login, and only if there are many projects; the msot recent > > branch of the first project is a default > > what is a login ?
Your unix login, as in logged in to the terminal. ae_p is an alias for export AEGIS_PROJECT="$1"; > > $ tkaenc > > # a gui pops up and lets you type a change information > > Waste of time - gets in my way. Maybe I don't even know what I'm going > to do. That's the whole thing. It's hard to do clean and nice development if you cannot say what you do. You can always modify it before final integration. > > $ ae_c 110 > > # okay, we choose to work on change number 110 > > what on earth ... ? Well, each change that you create with aenc or tkaenc gets a number. Usually, there should be a change for each confirmed bug report at least. The job of creating changes is quite separate from the job of actually developing the changes. You can have different people doing creation of the changes, and different ones doing development. > > $ aedb > > # begin development > > $ aecd; aecp README > > # add the README file into the change > > I seriously have to do this for every file I want to edit ? aedb = develop begin; you do it only to start development of a change, so it's done once per change aecd = change directory; it simply changes the current working directory to the root directory of the current change's (each change has its own development directory), obviously if you feel like doing cd ~/lyx.1.4.1.C110 instead of aecd, you're free ;-) aecp README = well, you have to be explicit which files are in the change; by default you either have a development directory symlinked to a read-only baseline, or you have a VPATH environment; either way you have to create physical files that you're gonna edit in your development directory; that's what aecp is for -- it copies the file from the baseline to the development directory > > $ vi README > > # do the changes (you could use any editor, obviously) > > $ aed && aeb && aede > > # build and finish development -- note that build here will do nothing, > > as # compilation results are in the repository too [managed automatically > > # by Aegis] > > $ aerpass > > # make the review pass > > $ cd ~; aed && aeb && aeipass > > # build and integrate into the baseline for given branch > > I assume you can turn this stuff off. Well, first of all you're a developer. A developer's business is to mind his own business ;-). So, once you do your edits, aed = do the diffs against the baseline aeb = build (only the files that you change will be rebuilt, other ones will be used from the baseline -- that means that you don't have to notoriously recompile everything) aede = finish the development, the changes goes into "awaiting review" state aerpass = indicate that the change had passed the review, this has to be done by whomever is marked as a reviewer, obviously it can be the same person all the time cd ~ = well, you have to exit the development directory before integration, since after stuff is integrated the development directory will vanish aed = do the integration diffs aeb = do the integration build aeipass = indicate that the change has passed the integration, this has to be done by whomever is marked as project administrator; once the integration is done the change becomes part of the baseline One should think of each change as a separate branch in the CVS model. Actually, a branch is just a regular change with a flag set indicating that it's a branch, not just "any" change. Changes can be bounced back and forth between the following states: awaiting development (say a new automatic change entry via bugzilla, or manually via tkaenc) being developed awaiting review awaiting integration being integrated completed. Only the "completed" state is final -- once it's integrated, it's integrated ;-) One of significant drawbacks of CVS is that it effectively prevents you from sharing your work in progress -- the only way for things to get to the "public" CVS server is via committing. Or you have to manually send diffs to the mailing list. In the Aegis model, you only need to say that the development is done; it then awaits review and anyone can have a look at it from the main (public) server, only when the change gets integrated it actually affects the baseline (which is supposed to be always working, not like in CVS where you can destroy the HEAD all you fancy and CVS is none the wiser). Cheers, Kuba Ober