[GSoC 11 submodule] Status update

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Hi,
time for a status update on the git submodule improvements GSoC 11 project.
This will be divided in to three section, technical progress, personal
reflection and how to follow my work.

You can read my previous status update here [1].

Technical progress
------------------
Three patch-series has been sent with a total of five patches (six if you
count patches that I don't have written).

First a patch series to make git submodule update continue update other submodules
when one submodule fails to be updated [2]. This patch is now in Junios
pu-branch.

Second a minor patch to reduce memory consumption. The improvements was
pretty small, but I took it as an exercise to write and send patches (in the
first patch-series I'd too many non-code related error for my taste). This
patch was however rejected [3].

My third patch series was about making push submodule aware to prevent the
user to forgot to push. This is currently sent to the list as an RFC [4].
This was the most challenging patch to write and a good start for my next
task.

My fourth task (and the main task of this summer) will start on June 27 and
will be to move a submodules .git-dir into the super-projects .git-dir.
Design of this is already done and approved by my mentors.

Personal reflection
-------------------
Before starting this project I was a frequent git user. I use git every
day. Apparently, you can be a frequent git user without using the power of
git. I've learned a lot of git as a tool the past weeks. I've learned git
rebase very well, a tool I never used before. It's really useful and
dangerous. Other commands I started to use (but not had any need for
before) was cherry-pick and branches.

I can clearly see that git can be a huge problem in a workspace with
power-git-users and unmotivated anti-scm users.

Although I was familiar with valgrind and gdb before, I never had any
really use for the tools in my development. Actually, they are really good
and I believe I have a lot to learn on this area.

My start has been very slow, it was harder than I thought to write a proper
patch and I spent a lot of time on formalities and test-writing, parts that
I previously thought where small or non-existing.

For the first time I've truly used a test driven development cycle. My
school experience of this was very bad. It was hard, slow and not needed.
However, now I learned that you actually can benefit from a test-driven
development cycle, that it can save time and that tests actually can be
fairly easy to write.

The mentor/student communication has also been something completely new.
How much help can you ask for? That's a very hard question. My mentors
fortunately helps me with this as well. And so far this has been a really
good support. It's far, far better than the support I've at school.

The code review cycle is pretty amazing. All code that I submits is viewed
by at least three persons, probably ever more. Even though a few bugs has
slipped past to the last guard (Junio) and this proves the real value of
code reviewing. Git has by far the most serious code review process I ever
worked with. This is amazing and gives a good platform for having good code
written. This is also something that we do not practice in school.

How to follow my work
---------------------
You can follow my work on github [5]. There are as of now five interesting
branches:

* gsoc11_submodule_enhancements
  Contains all patches sent to the list (this does not include RFC
  patches). This will always be clean and "stable".
* git-submodule-update
  Contains all commits for the git-submodule update patch series. This is
  to be considered "stable"
* buggfix
  Contains the minor patch to reduce memory consumption. This wasn't
  accepted by Junio. This is to be considered "stable".
* push_limits
  Contains all commits for the git push limitation patch series. This is
  subject to unstable updates.
* move_gitdir
  Contains all commits for the move git-dir patch-series. This is subject
  to unstable updates.

Links
-----
[1] My previous update
http://article.gmane.org/gmane.comp.version-control.git/173095/match=iveqy

[2] submodule update continue patch.
http://thread.gmane.org/gmane.comp.version-control.git/175500/focus=175725

[3] Use correct value when hinting strbuf_read()
http://article.gmane.org/gmane.comp.version-control.git/175844/match=iveqy

[4] push checks for unpushed remotes in submodules
http://thread.gmane.org/gmane.comp.version-control.git/176328/focus=176327

[5] Github-page
https://github.com/iveqy/git
-- 
Med vänliga hälsningar
Fredrik Gustafsson

tel: 0733-608274
e-post: iveqy@xxxxxxxxx
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at  http://vger.kernel.org/majordomo-info.html


[Index of Archives]     [Linux Kernel Development]     [Gcc Help]     [IETF Annouce]     [DCCP]     [Netdev]     [Networking]     [Security]     [V4L]     [Bugtraq]     [Yosemite]     [MIPS Linux]     [ARM Linux]     [Linux Security]     [Linux RAID]     [Linux SCSI]     [Fedora Users]