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/ -~----------~----~----~----~------~----~------~--~---