Week 4 & 5 - A week for the Audience


Hello everyone,

I am very pleased to welcome you all to read my this week's blog which is just for you. Last two weeks were very busy for me and hope for you to as there was Christmas as well as New Year Celebrations back to back. I was quite busy with my internship work also. I'm glad to tell you that I have successfully submitted my first patch series in the Git Mailing List. You can find the link below.

Link: https://public-inbox.org/git/pull.101.v17.git.gitgitgadget@gmail.com/#t

It’s been a great experience working with the Git mailing List aspects and getting to know some interesting facts about it.

Now, coming to the objective behind this blog. Basically, I will introduce you to my community and some concepts I have learned so far in this internship with my GIT Community.


What kind of people participate in your community?

Most of you must be aware of GIT (A stand-alone,open-source project and Github makes money by hosting git repositories). But for those who are not familiar with Git, I am here you to give a brief about my awesome GIT Community.

Git is basically
a free and open-source software, a version-control system for tracking changes in computer files and coordinating work on those files among multiple people. Github makes money It is primarily used for source-code management in software development, but it can be used to keep track of changes in any set of files.

People who want to start there career in Computer Science and technology (in IT Sector) then GIT Community is a must for them to participate. As being a version-control system GIT is the most useful and frequent tool that you will come across.


What problem is your community trying to solve?
Real life projects generally have multiple developers working in parallel. So a version control system like Git is needed to ensure there are no code conflicts between the developers.
Additionally, the requirements in such projects change often. So a version control system allows developers to revert and go back to an older version of the code.
Finally, sometimes several projects which are being run in parallel involve the same codebase. In such a case, the concept of branching in Git is very important.


How does your project fit into the larger community?

My project is based on git-bisect, one of the many features provided by Git.
In Git like in many other Version Control Systems (VCS), the different states of the data that is managed by the system are called commits. And, as VCS are mostly used to manage software source code, sometimes "interesting" changes of behavior in the software are introduced in some commits.
In fact people are specially interested in commits that introduce a "bad" behavior, called a bug or a regression. They are interested in these commits because a commit (hopefully) contains a very small set of source code changes. And it’s much easier to understand and properly fix a problem when you only need to check a very small set of changes, than when you don’t know where look in the first place.
So to help people find commits that introduce a "bad" behavior, the "git bisect" set of commands was invented. And it follows of course that in "git bisect" parlance, commits where the "interesting behavior" is present are called "bad" commits, while other commits are called "good" commits. And a commit that introduce the behavior we are interested in is called a "first bad commit". Note that there could be more than one "first bad commit" in the commit space we are searching.
So "git bisect" is designed to help find a "first bad commit". And to be as efficient as possible, it tries to perform a binary search.

Why would people want to use your project?

My project is "Improving git-bisect" and in this project, I need to convert the git-bisect.sh file to the bisect.c program.

Git bisect is a frequently used command which helps the developers in finding the commit which introduced the regression. Some part of it is written in shell script. I intend to convert it to portable C code thus making them builtins. This will increase Git’s portability.

Basically, git-bisect is a command that uses a binary search algorithm to find which commit in your project’s history introduced a bug. You use it by first telling it a "bad" commit that is known to contain the bug, and a "good" commit that is known to be before the bug was introduced. Then git bisect picks a commit between those two endpoints and asks you whether the selected commit is "good" or "bad". It continues narrowing down the range until it finds the exact commit that introduced the change.

In fact, git bisect can be used to find the commit that changed any property of your project; e.g., the commit that fixed a bug, or the commit that caused a benchmark’s performance to improve. To support this more general usage, the terms "old" and "new" can be used in place of "good" and "bad", or you can choose your own terms. See section "Alternate terms" below for more information.


What makes you most excited to work on your project?

Since my second year of Bachelors I have been using Git for every project, it played a big role in maintenance and collaboration of the code base. Git is a must known tool for every developer, and a great tool to know if you work in a team and want to maintain files.
Being a part Git (a tool used by 80% - 85% of developers around the world) is more than enough to extremely excited about.


What new terms or concepts have you learned in the past week?

So I have learnt many new skills. But let me tell you about the recent thing I have learnt. It is the Git Mailing list. Reading the Git mailing list is kind of drinking from a fire hose, and therefore some contributors prefer not to be subscribed. Yet sometimes you need to reply to a mail that you saw on public-inbox. But you use GMail and do not know how to get that mail into your inbox.
Here's how you can resolve this issue :
So this is what you can do: download the raw mbox (via your web-browser), and then use

curl -g --user "youremailId:<yourpassword>" --url "imaps://imap.gmail.com/INBOX" -T /path/to/raw.txt

What was confusing to you about the project?

Git is big project and my project is to continue the work of Pranit Bauva’s work (GSOC Intern), so it was a bit confusing as to where should I start? How should I start? What has been done? What has been done and not yet merged? Where can I find the unmerged patches? And many more questions arose when I first started the project. But my mentors Johannes and Christian helped me understand the project and resolve any confusions I had.

Comments

  1. > Github makes money by hosting git repositories
    > ...
    > Github makes money It is primarily used for source-code management in software development ...

    I think it doesn't make sense to mention and introduce GitHub when talking in general about the Git community. It leads to confusion. Also, making vague statements like "Github makes money by hosting git repositories" is not so good, IMHO.


    > Note that there could be more than one "first bad commit" in the commit space we are searching.

    That's odd. I know there would be more than one "bad" commits in the search space but I never knew there would be more than one "**first** bad commit". It doesn't make sense, does it?


    > See section "Alternate terms" below for more information.

    It's not wrong to quote the documentation[1] but it should better be distinguished from the blog post by quoting[2] the parts from the documentation. It would also be helpful to link to them.

    To finish with a minor point, it would be nice if you choose a better theme for your blog that looks good on mobile. It's not a big thing, though.

    Anyways, good luck on your internship :-)

    [1]: https://git-scm.com/docs/git-bisect
    [2]: http://www.peachpit.com/articles/article.aspx?p=2124990&seqNum=6

    ReplyDelete

Post a Comment

Popular posts from this blog

Week 1 - Getting Started with FOSS and GIT Community

Week 10 & 11