Thanks for the blueprint! I knew most of that but it was very helpful to see it all spelled out in order. -Marshall
On Sep 20, 2:52 pm, Robert Miller <[EMAIL PROTECTED]> wrote: > Maybe I can offer more words of advice. The source revision system > used by sage is Mercurial:http://www.genunix.org/wiki/index.php/Mercurial > The commands listed there have their equivalents in sage-land: > $ hg ci > becomes > $ sage -hg ci > The 'devel' directory contains all the different branches. When you > are running sage, you are running a single branch. The link 'sage' in > devel always points to the current branch. If you are running sage in > a certain branch, the objects hg_sage, hg_doc, hg_extcode and > hg_scripts correspond to Mercurial repositories for the main sage > library (including graph.py), the documentation, external files > (including our graph database ;) ), and scripts related to interfacing > etc, respectively. I usually only work with hg_sage, which is what you > want if you're editing graph.py. > > Maybe the easiest way to explain it is to describe a development cycle > (the answer to your question #1 is at 4b): > > 1. Download and install sage ( you may want to read your favorite > Dickens novel while this is happening ;) ) > 2. (Optional) do sage -upgrade if it has been a while since you did > #1. This will download and install the latest packages, including the > package for the main sage library. In other words, this will bring you > up to date with the latest 'official' version. Sometimes this breaks, > but don't panic-- most likely, you will just need to force some > package to install again (mail the list at this point, probably). > 3. (Also optional) if you want the latest, bleeding edge, super- > current code, you can also do hg_sage.pull() while you're running in > the 'main' branch. I always like to have my main branch as up to date > as possible, and do coding work on other branches, which brings us to: > 4. Editing and testing code: > Suppose you have just done 1-3 in order. You are now ready to begin > hacking! To follow a concrete example, we'll start from the beginning: > 4a. Create a branch you can safely hack in. If you simply run sage, > you will be in the current branch, which is by dafault sage-main. Do: > sage: hg_sage.clone('hackbranch') > This will copy the current branch to a branch called 'hackbranch', as > well as change the current branch to 'hackbranch'. Once the clone > command finishes, you will already be in the new branch. You can > verify this (or check what branch you are in whenever you like) by > typing hg_sage.status(). This will show you what you have modified, as > well as identify which branch you are in. > 4b. Switching between branches: Anytime you do > $ sage -b branch, > you will build the branch 'branch'. If you aren't editing the files in > branch, you won't have access to the changes, since this also switches > the current branch to 'branch'. After doing 4a, you are in the branch > 'hackbranch', so you shouldn't need to switch back and forth at all > while you are working: the command > $ sage -br > will build and run the current branch. > 4c. Writing and testing code: now that you're this far, write some > functions, doing sage -br to test them out. Once you're happy with the > way the function works, write some doctests for the function and test > them, for example: > $ sage -t devel/sage-hackbranch/sage/graphs/graph.py > This tells sage to do all the doctests in graph.py and report if any > fail. Not specifying a file will test every file in sage! Note that > this is equivalent to > $ sage -t devel/sage/sage/graphs/graph.py, > since hackbranch is the current branch, and the symbolic link 'sage' > points to hackbranch. > 5. Check in your changes, and submit a patch: > Once you have something that you definitely like, you should check in > your changes. This is done by > sage: hg_sage.ci() > When you do this, you will be shown the changes you have made, so > simply hit q when you're done looking at them. Then it will take you > to a vi screen, or something similar. Insert an insightful comment, > explaining what you have done, and save the file. Upon exit, Mercurial > will do the rest- it records the change in the repository, so that you > can share your changes with others, by: > sage: hg_sage.bundle('blah') > This creates a file called blah.hg, which contains the information of > what you changed. You can unbundle a bundle, which applies the changes > to a branch, via > sage: hg_sage.apply('blah.hg'). > > Note: > You must check in your changes before any transaction. If you haven't > checked in, and you try to do something else, Mercurial will > automatically put you into 'checking-in' mode first. > > As far as the following, are you getting this error when you run the > main branch of sage, before modification? > > > > > > 2. Something seems wrong with my mercurial installation. I can't figure > > > out where something might be misconfigured, though. I get errors about > > > hgext/hct when using hg_sage inside of sage, but when running hg outside > > > of sage, everything seems fine. I can find hct.py in > > > /usr/local/lib/python2.5/site-packages/hgext/. Does anyone have any > > > idea where I can poke to find out what's wrong? I'm running Ubuntu. > > > > Here's some relevant info: > > > > $ sage > > > ---------------------------------------------------------------------- > > > | SAGE Version 2.8.4.2, Release Date: 2007-09-13 | > > > | Type notebook() for the GUI, and license() for information. | > > > ---------------------------------------------------------------------- > > > Loading SAGE library. Current Mercurial branch is: graphs > > > hg_sage: hg_sage.status() > > > Getting status of modified or unknown files: > > > cd "/home/grout/sage/sage-2.8.3/devel/sage" && hg status > > > *** failed to import extension hgext/hct: No module named hgext/hct > > > *** failed to import extension hgext/hct: No module named hgext/hct > > > M sage/graphs/graph.py > > > > --- > > > > Branch: graphs > > > sage: > > > Exiting SAGE (CPU time 0m0.01s, Wall time 0m23.53s). > > > $ cd "/home/grout/sage/sage-2.8.3/devel/sage" && hg status > > > M sage/graphs/graph.py > > > [EMAIL PROTECTED]:~/sage/sage-2.8.3/devel/sage$ cat /home/grout/.hgrc > > > [ui] > > > username = Jason Grout <[EMAIL PROTECTED]> > > > ignore=~/.hgignore > > > > [extensions] > > > #hgext.convert= > > > $ ls -las /usr/local/lib/python2.5/site-packages/hgext/hct.py > > > 4 -rw-r--r-- 1 root staff 1151 2007-09-06 16:23 > > > /usr/local/lib/python2.5/site-packages/hgext/hct.py > > > $ > > --Robert L Miller --~--~---------~--~----~------------~-------~--~----~ To post to this group, send email to sage-devel@googlegroups.com To unsubscribe from this group, send email to [EMAIL PROTECTED] For more options, visit this group at http://groups.google.com/group/sage-devel URLs: http://sage.scipy.org/sage/ and http://modular.math.washington.edu/sage/ -~----------~----~----~----~------~----~------~--~---