I don't exactly understand these distributed control systems very
well, so hopefully this isn't an obvious question. Right now as I'm
working on symbolics I commonly have files from multiple branches open
(symbolics-stable/backup, symbolics-current, calculus-old).  I also
have to frequently have to toggle between them (to test backwards
compatibility).  It seems like switching to branching would require
having three full sage installs at the cost of a huge amount of space
if I want to be able to switch between them quickly and edit multiple
versions of the same file, which seems like a massive negative side
effect.  Do I understand this right?

On Thu, Jun 5, 2008 at 5:27 PM, Carl Witty <[EMAIL PROTECTED]> wrote:
>
> On Jun 5, 3:28 pm, "Glenn H Tarbox, PhD" <[EMAIL PROTECTED]> wrote:
>> On Thu, 2008-06-05 at 14:23 -0700, Carl Witty wrote:
>> > As far as the second half of your response, I'm confused.  The build
>> > system already understands chains where the output of one step is the
>> > input to the next: the .so file is made from the .o file, which is
>> > made from the .c file, which is made from a variety of .pyx, .pxd,
>> > and .pxi files.  When we change a .pxi file, all the required
>> > rebuilding is done automatically (which may take 10 or 20 minutes for
>> > changes to "core" .pxi files, which is why we don't want to do it
>> > every time we change branches).
>>
>> yea, as I said to Robert, the frequent branch toggle is a new one to me.
>> Typically, a developer branches, hacks, occasionally shelving, but
>> working through to local merge.  Maybe Sage development is different...
>> I really don't know.
>
> Hmm... now that you mention it, I hardly ever change branches
> (clones), so I'm not sure why this feels so important to me (and
> evidently to Robert).  Also, most branch changes would rebuild fairly
> quickly (if every modification to Sage required a 20-minute rebuild,
> development would be very painful; but it's actually fairly rare to
> touch these "core" .pxi files).  My current theory is that it only
> takes 2 or 3 20-minute rebuilds on branch changes to leave you scarred
> for life, and willing to do almost anything to avoid the pain :)
>
>> > Are you talking about the sage -> sage-<NAME> symlink?  I'm never
>> > confused by it because I never use it; I always use sage-<NAME>
>> > directly.  We could probably figure out a way to avoid this symlink,
>> > if we decided it was a problem.
>>
>> Yup, Robert brought up the same point...  and its perhaps only a problem
>> for me cuz I'm using PyDev which behaves poorly... its my problem and
>> will fix it... but it exposed things to me which seem "unnatural" and
>> upon further investigation got downright kinky... not that I'm not
>> flexible (I did move to Seattle but didn't get all the piercings just
>> yet :-)
>
> What does PyDev do with the symlink?
>
> I don't actually know what all the symlink is used for, so I don't
> know how hard it would be to eliminate; but I would guess that moving
> it somewhere else would not be too bad.
>
> Actually, we presumably can't rely on the symlink for a native Windows
> port anyway, so the people working on that may eliminate the symlink
> fairly soon.
>
>> OTOH, Sage does all kinds of things differently... and its amazing
>> (there's no system out there where you download a 200MB tarball and type
>> make... it just doesn't happen) so I'm a bit reluctant to mess around
>> all that much just yet...
>
> Yep... it certainly impressed me the first time I installed it.
>
>> > > > 4) It's easier to abandon the history of a clone, both for hopelessly
>> > > > broken development efforts and refereeing of other people's patches.
>>
>> > > git branch -D badbranch
>>
>> > > as opposed to the usual
>>
>> > > git merge developmentBranch
>> > > git branch -d developmentBranch
>>
>> > > (btw, I'm a git user... I'm sure there's something similar in Hg)
>>
>> > I don't think there is.  (I've looked.)
>>
>> I'll take your word for it.... but there definitely should be... since
>> there isn't I'd posit that there is badness architecturally with Hg cuz
>> this issue must come up multiple times a day....
>
> I only know a little bit about mercurial internals, but I know enough
> to have a guess as to why this is hard.
>
> In mercurial, each source file has one corresponding file in the
> repository; the repository files are treated as append-only.  So if
> you make changes to a file in branch A, commit, change it in branch B,
> commit, branch A, commit, branch B, commit, then this repository file
> will end up with the changes ...ABAB.  Then expunging branch A would
> require rebuilding this file, which otherwise is never necessary in
> mercurial.  (There is a mercurial extension that lets you eliminate
> all changes in a repository after a given revision number; this is
> easier to handle, since you just have to go through all the repository
> files and truncate them to the appropriate point.)
>
> Carl
>
> >
>

--~--~---------~--~----~------------~-------~--~----~
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://www.sagemath.org
-~----------~----~----~----~------~----~------~--~---

Reply via email to