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

Reply via email to