Introductory Blog

Published: 05/28/2019

Hey everyone! I am Taapas Agrawal, a sophomore at Indian Institute of Technology, Kharagpur. I am working under Sub-Org Mercurial, a distributed version control system. My project is about implementing hg abort and hg abort commands which are currently absent in Mercurial. This is what I will be working on for the next 12 weeks as my GSoC project.
My project is basically divided into three major tasks each having a variety of subtasks. The three major tasks are as follows:

  •  Unification of the state determining APIs.

  •  Implementation of hg abort in core as well as extensions.

  • Implementation of hg continue in core as well as extensions.

Completing these 3 tasks timely would lead to the completion of my project.
What did I do in the community bonding period?
During the first week of the Community bonding period, I had a 45 minutes video conference with my mentors which was basically to give a kick-start to the project. Many of my initial doubts were dealt with in the meeting and I was given a very good starting point from which I could start determining the solution of the first major task of Unification of APIs which in my view is toughest among the three. I was asked to send a mail in the Mercurial mailing list in case I have a major doubt or ping on IRC. 
During the period I analysed the hint given and was able to understand the code better. I read through the code of the two APIs and tried to make a list what all the features and functionalities individually each of them has and how a combined API could be made to perform those tasks.
I asked any kind of doubts on IRC and the mentors were really helpful and gave me suitable hints. Towards the end, I was able to write a rough pseudo-code of what the new API will look like and started writing code for that.
During this period I also planned out how I will implement the other 2 major tasks of implementation of
hg abort and hg continue.

What is coming up next?  
The coming weeks I am planning to complete the code for the new API and get it reviewed by my mentor before actually merging it with the rest of the code. The patch will be buggy so I plan to remove these bugs as soon as possible with the help of my mentor.
Did you get stuck anywhere?
There were instances where I could not figure out what some pieces of code do and I came across functionalities which the two APIs had and that could not be combined as it is but require a totally new method and a new way of implementation.