Inventory Tree
"Saurabh Sehgal" <[email protected]>
| Newsgroups | gmane.comp.version-control.arch.user |
|---|---|
| Message-ID | <[email protected]> |
Dear Sir/Madam,
My name is Saurabh Sehgal, and I am currently in the second year of the
Electrical Engineering program at the University of Toronto. I am a young
developer, learning his way through University, and very intersted in
contributing to the GNU Arch project through the Google Summer of Code
program. I have had extensive experience in C++ and C programming languages,
and recently, I have programmed my own webserver, which I named Atlantis at
my University. Through this experience, I have developed good knowledge of
the UNIX file system, string parsing, I/O streams, sockets etc. Those of
you, who have not heard about the Google Summer of Code program, it is a
program that allows students to contribute to certain projects throughout
the summer, and gain valuable developing experience. I am a passionate young
individual, who is very eager to be the part of GNU Arch, and want to work
on the Tree Inventory and and the Whole tree diff patch. The program does
assign a mentor to the student throughout the summer, I just do not know who
the mentor is going to be. Right now, I am busy writing a good proposal for
the Tree Inventory tool and the Whole tree diff patch to get selected for
this amazing project. I have been working on GNU/Linux systems, since I was
in high school, and want to give back to the GNU community. The description
of the Tree Inventory and Whole tree diff patch is:
1. *Tree inventory tool:* a tree inventory examines the contents of a
tree and distinguishes "important" files from "discardable" files. For
example, if the tree is a C program, the ".c" and ".h" files are important
but the ".o" files and Emacs back-up files ("*~") are "discardable".
The inventory tool also assigns a logical ID to files such that that
ID is independent of the file name. If you rename "foo.c" to be "bar.c",
the inventory tool should say before hand that "foo.c" has logical
identity X and, after, that "bar.c" now has logical identity X.
There should be flexible ways for a user to assign logical identities
to files.
Directories, symbolic links, and special files should be able to have
logical identities.
2. *Whole tree diff and patch:* A traditional recursive diff compares
files that have the same name in both trees and doesn't compare directories
at all. An arch recursive diff and patch should be based on the logical IDs
of the inventory too. If, in tree A, the file with ID X is called "
foo.c" and in tree B the file with ID X is called "bar.c", Arch's
whole tree diff should know to compare "foo.c" to "bar.c". If we apply
the resulting patch to a third tree, in which the file with ID X is called "
baz.c", Arch's whole tree patch should know to apply the differences
to "baz.c". If comparison of two trees reveals that "foo.c" has been
renamed to "bar.c", then applying that patch to a tree that still has
"foo.c" should cause the file to be renamed "bar.c".
from : http://www.gnu.org/software/soc-projects/ideas.html.
I have been trying to come up with creative and efficient algorithms to
implement the feature described on the above website. However, in order to
achieve my goals, I need to know what documentation am I going to have to
work with, and what code is going to have to be changed in the GNU Arch
software, for this tool to be successful. If there is anyone, who can be
kind enough to point me in the right direction in my research, I would be
more than grateful to them. I really want to be a part of this project, and
become a successful contributer to GNU Arch. I am not looking for any
algorithms, or any suggestions on implementation, since that is for me to
come up with, I just need to know what kind of code am I going to have to
work with, and what existing documentation that might exist on the GNU Arch
archives that I can read over. If anyone can point me in the right
direction, I will be more than grateful.
Thanking you,
Saurabh Sehgal
[email protected]