{"thread":{"id":"54535","subject":"[Outreachy][Proposal] : Improve droping and rewording commits in Git interactive rebase","startedAt":"2020-10-30T10:22:55Z","lastAt":"2020-10-30T10:22:55Z","messageCount":1,"participants":["Charvi Mendiratta"],"isPatch":false,"patchVersion":null,"patchTotal":null},"messages":[{"id":"408725","messageId":"CAPSFM5exPpc5JW0aXY+EYDMe62XCUPa9eOup=WY6xnUH3uh-eg@mail.gmail.com","threadId":"54535","inReplyTo":"CAAB2g-EWBSoytn-aF2LOuxBYZLmSURzwkf1-yM50ukOpo9TDrA@mail.gmail.com","subject":"[Outreachy][Proposal] : Improve droping and rewording commits in Git interactive rebase","fromName":"Charvi Mendiratta","fromEmail":"charvi077@gmail.com","sentAt":"2020-10-30T10:22:41Z","receivedAt":"2020-10-30T10:22:55Z","isPatch":false,"sender":{"key":"charvi077@gmail.com","avatar":"https://avatars.githubusercontent.com/u/32788121?v=4"},"body":"Hey Everyone!\n\nThis is the initial version of my proposal. Although I realized that,\nI am quite late for sending the proposal but I still hope to have\nreviews from the community.\nI also thank Phillip for helping me in understanding more about the\nproject details [1] .\nI have made the timelines accordingly, but still I think I am lacking\nin it as I don't know much about the codebase in detail . Need some\nguidance for the timeline .\nAlso, there's a column for community-specific questions in the final\napplication. Is there anything specific that I have to fill in that part ?\n\nThanks and Regards ,\nCharvi\n[1] https://lore.kernel.org/git/CAPSFM5e9tXx_LuwNK+e1wOjaHb6kiTCEt3WeL851KAbTPNsEow@mail.gmail.com/\n\n-------------------------------------------------------------------------------\nLink to docs : https://docs.google.com/document/d/19LYskEBWFp2q2Yi2hfibbxT5kt6czLZk_ZCajkHQ4QQ/edit?usp=sharing\n-------------------------------------------------------------------------------\n## Project\n\nImprove droping and rewording commits in Git interactive rebase\n\n## Contact Information\n\nName                  :   Charvi Mendiratta\nE-mail                 :   charvi077@gmail.com\nIRC                     :   charvi077 on #git or #git-devel\nLinkedin              :   charvi077 [https://www.linkedin.com/in/charvi077/]\nGithub                 :   charvi-077 [https://github.com/charvi-077]\nTime Zone           :   IST (UTC +0530)\n\n## Background\n\nI am Charvi Mendiratta, recently graduated from Panjab University,\nIndia in Electronics and Communication. I like to learn and explore\nnew things in my day to day life. I have worked mostly on Robotics\nSoftware development, college projects and have internship experience.\nI’ve been writing code in C/C++ and Python. I have worked a bit on\nshell scripts also during my semester project. Besides this I always\nprefer to make my work and projects open source on github, contribute\nto other projects and to promote open source culture.\n\n## Contribution to Git\n\nContributing to git helped me a lot understanding about the workflow,\ngetting familiar with the mailing list, overview of writing test\nscripts and  about the git commands itself. I will keep contributing\nto Git, solving more issues or through review discussions.\n\n#### Microproject :\n\nModernize the test script t7201,t7101,t7102\nList: https://lore.kernel.org/git/20201015175709.20121-1-charvi077@gmail.com/\n\n#### Status :\n\ncm/t7xxx-cleanup (2020-10-22) 6 commits\n(merged to 'next' on 2020-10-26 at 8b58e54942)\n\n## Project Overview\n\nGit commit commands include the two options for the use with rebase\n--autosquash, '--fixup=<commit>', that creates the commit message with\na prefix of 'fixup!' with the subject line from the specific commit\nand '--squash=<commit>' . At the same time, to reword the commit\nmessage one has to deal with fixups and editing a todo list upon\nrebase --autosquash to reword the commit message .\nImplementing the reword! commit will make it easy and give the options\nto either reword the old commit message or to change the both content\nand message of the old commit at the same time.\n\nNext, the current  way of marking the commit to be excluded in\nsubsequent rebase --autosquash is git revert -n <commit> && git commit\n-m 'drop!' '$(git show -s --oneline <commit>)'. Implementing the drop!\ncommit will make it easy to drop the changes and the effect of drop\ncommit can be reversed for any commit built on top of the drop! commit\nbefore rebase.\n\n## Discussions and points to work on\n\nThe project is mentioned by Dscho in the issue\n[https://github.com/gitgitgadget/git/issues/259] and further discussed\nbriefly\n[https://public-inbox.org/git/alpine.DEB.2.21.1.1710151754070.40514@virtualbox/].\nAlso there is discussion\n[https://lore.kernel.org/git/95cc6fb2-d1bc-11de-febe-c2b5c78a6850@gmail.com/]\nregarding the implementation of the reword! commit. Apart from this, I\nalso discussed with the Phillip Wood regarding the project\n[https://lore.kernel.org/git/CAPSFM5e9tXx_LuwNK+e1wOjaHb6kiTCEt3WeL851KAbTPNsEow@mail.gmail.com/]\n\nConsidering all the past threads and discussions, I summed up with the\nfollowing points to work on :\n\n#### Adding reword command  in the rebase\n\nIn the past patches of Phillip Wood’s work\n[https://github.com/phillipwood/git/commits/wip/rebase-amend] , the\n'reword!' is implemented as 'amend!' in git rebase .\n\n- Need to figure out the implementation of the reword in the rebase.\nAs of  now the possible options are :\n\nTo avoid the reword command and instead use the 'fixup -C' as\ndiscussed with Phillip\n[https://lore.kernel.org/git/29fc2f59-1cca-a3db-5586-bbd7b2e4806d@gmail.com/].\n\nOtherwise if we are using it then, also the name 'reword' must be\nchanged to 'revise' or 'amend' or may be other, because the content\nand commit message both are changing in the reword! commit.\n\n- Implement the way to handle empty commits in the git rebase.\n\n#### Implementation of reword! Commit\n\n- Figure out the user interface for the --reword.\nAs of now as mentioned by Phillip\n[https://lore.kernel.org/git/966470c3-8883-faf1-629f-89fc8d18b339@gmail.com/],\nthere is the possible way of implementing the reword! Commit as\n'--fixup= reword/amend:commit'.\n\n- Look into the present codebase of --fixup commit and implement the\nreword! commit option in it.\n\n#### Implementation of drop! commit and adding drop command in rebase\n\n- Figure out the way to add drop commit, as of now one of possible\nways to add it is 'git revert --drop' also looking for its\nimplementation in Git rebase .\n\n- Look for its related codebase and work on its implementation .\n\n#### Tests and Documentation\n\n- Write the test scripts of every codebase I add and also complete its\ndocumentation following the proper guidelines .\n\n## Project Timeline\n\n#### Nov 23 - Dec 1 (Before internship officially starts)\n\n- Interact with git community regarding the project for any suggestion\n- Get familiar with the Coding Guidelines, test scripts and\ndocumentation  instructions to be followed\n- Discuss with mentors regarding the prerequisites that are being\nessential to be completed or tested for the smooth flow of the project\n- Understand and implement the Phillip’s work [\nhttps://github.com/phillipwood/git/commits/wip/rebase-amend]\n\n#### Dec 1 - Dec 11 (Phase 1)\n\n- Figure out and discuss with the community, regarding the\nimplementation of --reword in the git interactive rebase\n- Make changes in Phillips Wood’s work, as per the decided UI for\n--reword in the rebase\n- Implement the way to handle empty commits in the rebase\n- Complete the documentation of the above work\n\n\n#### Dec 12 - Jan 12 (Phase 2)\n\n- Figure out and discuss with the community, regarding the user\ninterface for the git reword! commit\n- Discuss with mentors regarding the related codebase to be changed\n- Implement the reword! commit\n- Write the test scripts for the code base added\n- Add the documentation of the reword! commit\n\n#### Jan 12 - February 16 (Phase 3)\n\n- Figure out and discuss with the community, regarding the user\ninterface for the git drop! commit and also for the implementation of\ndrop in git interactive rebase\n- Discuss with mentors regarding the related codebase to be changed\n- Implement drop! commit and write the test cases for the added codebase\n- Addition of the drop! commit\n- Implement the drop commit in the rebase\n- Write the test scripts for the drop command code that is added\n\n#### February 16 - March 2 (Buffer time)\n\n- Check for the major issues if any leftovers are in the project.\n- Complete the documentation of drop command in rebase\n\n## Contribution process and Interaction with the mentors\n\nI will keep committing changes on my Github fork\n[https://github.com/charvi-077/git] and finally post a patch series on\nthe Mailing List. I will make sure to interact with the community as\nwell as mentors regularly and will take feedback from them after every\nphase mentioned in the project timeline.\nAlso, I aim to  weekly update my progress report on the blog and share\nit on the List. Apart from that I will document anything new I learn,\nits related references and will share it on my blog.\n\n## Availability\n\nI have no commitments planned for the Internship period. So, I can\neasily devote 40-45 hours a week on this project.\n\n## After Outreachy\n\nEven after completion of Outreachy, I plan on continuing my\ncontribution to Git, by solving more issues or review discussions. I\nvision to do more improvements to the git interactive rebase or\nwriting its wrapper as pointed out by Phillip\n[https://lore.kernel.org/git/966470c3-8883-faf1-629f-89fc8d18b339@gmail.com/].\n\nBesides this, I always like the way the Open Source community works\nand I aim to get involved in the same way, develop mentorship skills\nas well as the ability to help each other and try to give back to the\ncommunity by mentoring and guiding others.\n"}]}