From: Bo Yang <struggleyb.nku@gmail.com>
To: git@vger.kernel.org, Thomas Rast <trast@student.ethz.ch>
Subject: [GSoC 2010] The 2nd week
Date: Tue, 1 Jun 2010 14:41:01 +0800 [thread overview]
Message-ID: <AANLkTinelswhPBZJNBDo8VesCxBgRlEZezwcY9dWyaF4@mail.gmail.com> (raw)
Hi,
I have deal with many graduated works personally in my college, so
it is a busy week for me and this update comes a little later. Of
course, I get progress on git development. Generally:
1. follow the issues of '--graph improvement' series;
2. try to find out a way to deal with the range split/combine problem.
And I think it is worth to mention how we will deal with the line
ranges when we follow the history, my mentor Thomas give the idea to
use a topo-order traverse, and I get a detail solution from that.
The line level browser will start at certain commit and its line
ranges, the ranges will not split/combine when we just encounter
linear history. But when it comes the merge commit, one branch will
take part of the ranges and other branches will take others. That
means the ranges will split here and will combine again after we reach
the common ancestor of all branches. Since, we will not know what a
commit's interesting ranges until all its children branches' commit's
ranges combine, so we need to walk the commits in topo-order and to
get the parents' commits' interesting ranges when we reach a commit.
This will make sure, when we reach some commit, its ranges is combined
and valid. Generally,
1. Sort all the commits in topo-order and put the sorted list in [list];
2. Pull one commit from [list], split the ranges according parents of
current commit, output the diff between current commit and each
parent;
3. Loop 2 until exhaust the [list];
Of course, the commit touch no interesting ranges will be ignored.
The point here is we will traverse the commit graph twice to achieve
this, I think it is the only way to do this and if there is some
smarter way to do this, please point me out, thanks!
--
Regards!
Bo
----------------------------
My blog: http://blog.morebits.org
Why Git: http://www.whygitisbetterthanx.com/
reply other threads:[~2010-06-01 6:41 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=AANLkTinelswhPBZJNBDo8VesCxBgRlEZezwcY9dWyaF4@mail.gmail.com \
--to=struggleyb.nku@gmail.com \
--cc=git@vger.kernel.org \
--cc=trast@student.ethz.ch \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).