#18618: sandpile revisions
-------------------------------------+-------------------------------------
Reporter: dperkinson | Owner:
Type: enhancement | Status: positive_review
Priority: major | Milestone: sage-6.8
Component: graph theory | Resolution:
Keywords: sandpile | Merged in:
Authors: David Perkinson | Reviewers: Qiaoyu Yang, Kaui Yu
Report Upstream: N/A | Work issues:
Branch: | Commit:
public/sandpile_updates | 249b64720653fdd434e76336b442c1bbd5b6fe2c
Dependencies: | Stopgaps:
-------------------------------------+-------------------------------------
Comment (by dperkinson):
Wow. That's pretty complicated. Thanks for your help.
Just to make sure: if I am understanding correctly, you have just done
everything that needs to be done for the moment. In other words, the
rebasing is done, right?
In case further revisions are necessary, would it make sense for me now to
start from a clean slate on my local machine, following the directions on
the git-trac page (making sure to clone into a separate clean directory)?
Thanks again.
Replying to [comment:48 dimpase]:
> As it is longer to explain how to proceed than to do it myself, I record
steps I undertake;
> please feel free to ask for explanation.
> Start by cloning a clean Sage 6.8.beta8 (described in the manual). Go to
its root, and do
>
> {{{
> $ git fetch trac u/dperkinson/sandpile_revisions
> From trac.sagemath.org:sage
> * branch u/dperkinson/sandpile_revisions -> FETCH_HEAD
> clpc171[/home/scratch/dimpase/sage/tmp]$ git merge FETCH_HEAD
> Auto-merging src/sage/sandpiles/sandpile.py
> CONFLICT (content): Merge conflict in src/sage/sandpiles/sandpile.py
> Automatic merge failed; fix conflicts and then commit the result.
> clpc171[/home/scratch/dimpase/sage/tmp]$ git status
> On branch newsp
> You have unmerged paths.
> (fix conflicts and run "git commit")
>
> Changes to be committed:
>
> modified: src/doc/en/thematic_tutorials/sandpile.rst
> modified: src/sage/sandpiles/all.py
> new file: src/sage/sandpiles/examples.py
>
> Unmerged paths:
> (use "git add <file>..." to mark resolution)
>
> both modified: src/sage/sandpiles/sandpile.py
> }}}
>
> ok, so we need to sort out the conflict (cf. e.g.
https://help.github.com/articles/resolving-a-merge-conflict-from-the-
command-line/)
>
> serach for `HEAD` in the output of the following:
>
> {{{
> $ git blame src/sage/sandpiles/sandpile.py
> ...
> 00000000 (Not Committed Yet 2015-07-13 15:28:41 +0100 598) <<<<<<<
HEAD
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 599)
processed_g = {}
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 600)
for k in g.keys():
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 601)
temp = {}
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 602)
for vertex in g[k]:
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 603)
temp[vertex] = 1
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 604)
processed_g[k] = temp
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 605)
g = processed_g
> 617b158e (Wilfried Luebbe 2014-03-28 16:56:44 +0100 606)
elif isinstance(g, Graph):
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 607)
processed_g = {}
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 608)
for v in g.vertices():
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 609)
edges = {}
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 610)
for n in g.neighbors(v):
> e82c8f99 (Jeroen Demeyer 2015-06-29 11:01:23 +0200 611)
if (isinstance(g.edge_label(v,n), int)
> e82c8f99 (Jeroen Demeyer 2015-06-29 11:01:23 +0200 612)
and g.edge_label(v,n) >= 0):
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 613)
edges[n] = g.edge_label(v,n)
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 614)
else:
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 615)
edges[n] = 1
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 616)
processed_g[v] = edges
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 617)
g = processed_g
> 617b158e (Wilfried Luebbe 2014-03-28 16:56:44 +0100 618)
elif isinstance(g, DiGraph):
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 619)
processed_g = {}
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 620)
for v in g.vertices():
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 621)
edges = {}
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 622)
for n in g.neighbors_out(v):
> e82c8f99 (Jeroen Demeyer 2015-06-29 11:01:23 +0200 623)
if (isinstance(g.edge_label(v,n), int)
> e82c8f99 (Jeroen Demeyer 2015-06-29 11:01:23 +0200 624)
and g.edge_label(v,n) >= 0):
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 625)
edges[n] = g.edge_label(v,n)
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 626)
else:
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 627)
edges[n] = 1
> 07981740 (Marshall Hampton 2011-01-12 00:17:35 -0600 628)
processed_g[v] = edges
> 00000000 (Not Committed Yet 2015-07-13 15:28:41 +0100 629) =======
> 9e022d84 (David Perkinson 2015-06-11 07:10:23 -0700 630)
processed_g = {i:dict(Counter(g[i])) for i in g}
> 00000000 (Not Committed Yet 2015-07-13 15:28:41 +0100 631) >>>>>>>
FETCH_HEAD
> ...
> }}}
>
> here (look at its date!) is the commit that prevents a clean merge:
> {{{
> commit e82c8f99d6493f48d3a02c598fc723e693f5616f
> Author: Jeroen Demeyer <[email protected]>
> Date: Mon Jun 29 11:01:23 2015 +0200
>
> Fix suspicious isinstance() changes
> }}}
> as it changes stuff in a place that has to be removed, we can basically
ignore it.
> (that is, when rebasing, the corresponding chunk can just be removed).
>
>
> Now open `src/sage/sandpiles/sandpile.py` in an editor and remove the
lines between `<<<..< HEAD` and `====`,
> as well as the lines with `<<<..< HEAD`, `====`, and `>>>>>>>
FETCH_HEAD`. Now we can commit our changes.
> {{{
> $ git add src/sage/sandpiles/sandpile.py
> $ git commit -m "rebased over that
e82c8f99d6493f48d3a02c598fc723e693f5616f"
> }}}
> Now locally everything is OK, run tests, etc...
> Finally, I push it to trac (not using `git trac`, but rather "git the
hard way" :-))
> {{{
> $ git push trac --set-upstream HEAD:public/sandpile_updates
> }}}
> and in the browser replace your (broken, shown in red) Branch:
`u/dperkinson/sandpile_revisions` with `public/sandpile_updates`. And
click Submit. (your branch is still there on the server, by the way, and
your commits are in the new branch (click on `commits` to see this)).
> ----
> New commits:
>
||[http://git.sagemath.org/sage.git/commit/?id=249b64720653fdd434e76336b442c1bbd5b6fe2c
249b647]||{{{rebased over that
e82c8f99d6493f48d3a02c598fc723e693f5616f}}}||
--
Ticket URL: <http://trac.sagemath.org/ticket/18618#comment:54>
Sage <http://www.sagemath.org>
Sage: Creating a Viable Open Source Alternative to Magma, Maple, Mathematica,
and MATLAB
--
You received this message because you are subscribed to the Google Groups
"sage-trac" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To post to this group, send email to [email protected].
Visit this group at http://groups.google.com/group/sage-trac.
For more options, visit https://groups.google.com/d/optout.