Skip to content

Commit 5ef811a

Browse files
nasamuffingitster
authored andcommitted
documentation: add anchors to MyFirstContribution
During the course of review for MyFirstContribution.txt, the suggestion came up to include anchors to make it easier for veteran contributors to link specific sections of this documents to newbies. To make life easier for reviewers, add these anchors in their own commit. See review context here: https://public-inbox.org/git/[email protected]/ AsciiDoc does not support :sectanchors: and the anchors are not discoverable, but they are referenceable. So a link to "foo.com/MyFirstContribution.html#prerequisites" will still work if that file was generated with AsciiDoc. The inclusion of :sectanchors: does not create warnings or errors while compiling directly with `asciidoc -b html5 Documentation/MyFirstContribution.txt` or while compiling with `make doc`. AsciiDoctor does support :sectanchors: and displays a paragraph link on mouseover. When the anchor is included above or inline with a section (as in this change), the link provided points to the custom ID contained within [[]] instead of to an autogenerated ID. Practically speaking, this means we have .../MyFirstContribution.html#summary instead of .../MyFirstContribution.html#_summary. In addition to being prettier, the custom IDs also enable anchor linking to work with asciidoc-generated pages. This change compiles with no warnings using `asciidoctor -b html5 Documentation/MyFirstContribution.txt`. Signed-off-by: Emily Shaffer <[email protected]> Signed-off-by: Junio C Hamano <[email protected]>
1 parent 76644e3 commit 5ef811a

File tree

1 file changed

+35
-0
lines changed

1 file changed

+35
-0
lines changed

Documentation/MyFirstContribution.txt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,20 @@
11
My First Contribution to the Git Project
22
========================================
3+
:sectanchors:
34

5+
[[summary]]
46
== Summary
57

68
This is a tutorial demonstrating the end-to-end workflow of creating a change to
79
the Git tree, sending it for review, and making changes based on comments.
810

11+
[[prerequisites]]
912
=== Prerequisites
1013

1114
This tutorial assumes you're already fairly familiar with using Git to manage
1215
source code. The Git workflow steps will largely remain unexplained.
1316

17+
[[related-reading]]
1418
=== Related Reading
1519

1620
This tutorial aims to summarize the following documents, but the reader may find
@@ -19,8 +23,10 @@ useful additional context:
1923
- `Documentation/SubmittingPatches`
2024
- `Documentation/howto/new-command.txt`
2125

26+
[[getting-started]]
2227
== Getting Started
2328

29+
[[cloning]]
2430
=== Clone the Git Repository
2531

2632
Git is mirrored in a number of locations. Clone the repository from one of them;
@@ -31,6 +37,7 @@ the mirror on GitHub.
3137
$ git clone https://github.com/git/git git
3238
----
3339

40+
[[identify-problem]]
3441
=== Identify Problem to Solve
3542

3643
////
@@ -44,6 +51,7 @@ of invocation during users' typical daily workflow.
4451
(We've seen some other effort in this space with the implementation of popular
4552
commands such as `sl`.)
4653

54+
[[setup-workspace]]
4755
=== Set Up Your Workspace
4856

4957
Let's start by making a development branch to work on our changes. Per
@@ -62,11 +70,13 @@ $ git checkout -b psuh origin/master
6270
We'll make a number of commits here in order to demonstrate how to send a topic
6371
with multiple patches up for review simultaneously.
6472

73+
[[code-it-up]]
6574
== Code It Up!
6675

6776
NOTE: A reference implementation can be found at
6877
https://github.com/nasamuffin/git/tree/psuh.
6978

79+
[[add-new-command]]
7080
=== Adding a New Command
7181

7282
Lots of the subcommands are written as builtins, which means they are
@@ -195,6 +205,7 @@ For the remainder of the tutorial, the subject line only will be listed for the
195205
sake of brevity. However, fully-fleshed example commit messages are available
196206
on the reference implementation linked at the top of this document.
197207

208+
[[implementation]]
198209
=== Implementation
199210

200211
It's probably useful to do at least something besides printing out a string.
@@ -358,6 +369,7 @@ about. Neat! Let's commit that as well.
358369
$ git commit -sm "psuh: display the top of origin/master"
359370
----
360371

372+
[[add-documentation]]
361373
=== Adding Documentation
362374

363375
Awesome! You've got a fantastic new command that you're ready to share with the
@@ -445,6 +457,7 @@ sees that your command has been implemented as well as documented) by running
445457

446458
Go ahead and commit your new documentation change.
447459

460+
[[add-usage]]
448461
=== Adding Usage Text
449462

450463
Try and run `./bin-wrappers/git psuh -h`. Your command should crash at the end.
@@ -501,6 +514,7 @@ your command terminated before anything else interesting happens. Great!
501514

502515
Go ahead and commit this one, too.
503516

517+
[[testing]]
504518
== Testing
505519

506520
It's important to test your code - even for a little toy command like this one.
@@ -515,11 +529,13 @@ So let's write some tests.
515529

516530
Related reading: `t/README`
517531

532+
[[overview-test-structure]]
518533
=== Overview of Testing Structure
519534

520535
The tests in Git live in `t/` and are named with a 4-digit decimal number using
521536
the schema shown in the Naming Tests section of `t/README`.
522537

538+
[[write-new-test]]
523539
=== Writing Your Test
524540

525541
Since this a toy command, let's go ahead and name the test with t9999. However,
@@ -568,6 +584,7 @@ You can get an idea of whether you created your new test script successfully
568584
by running `make -C t test-lint`, which will check for things like test number
569585
uniqueness, executable bit, and so on.
570586

587+
[[local-test]]
571588
=== Running Locally
572589

573590
Let's try and run locally:
@@ -591,6 +608,7 @@ dependencies. `prove` also makes the output nicer.
591608

592609
Go ahead and commit this change, as well.
593610

611+
[[ready-to-share]]
594612
== Getting Ready to Share
595613

596614
You may have noticed already that the Git project performs its code reviews via
@@ -613,6 +631,7 @@ Regardless of which method you choose, your engagement with reviewers will be
613631
the same; the review process will be covered after the sections on GitGitGadget
614632
and `git send-email`.
615633

634+
[[howto-ggg]]
616635
== Sending Patches via GitGitGadget
617636

618637
One option for sending patches is to follow a typical pull request workflow and
@@ -623,6 +642,7 @@ mirror of the Git project, and does some magic to turn the PR into a set of
623642
emails and send them out for you. It also runs the Git continuous integration
624643
suite for you. It's documented at http://gitgitgadget.github.io.
625644

645+
[[create-fork]]
626646
=== Forking `git/git` on GitHub
627647

628648
Before you can send your patch off to be reviewed using GitGitGadget, you will
@@ -632,6 +652,7 @@ you have a GitHub account.
632652
Head to the https://github.com/git/git[GitHub mirror] and look for the Fork
633653
button. Place your fork wherever you deem appropriate and create it.
634654

655+
[[upload-to-fork]]
635656
=== Uploading to Your Own Fork
636657

637658
To upload your branch to your own fork, you'll need to add the new fork as a
@@ -677,6 +698,7 @@ $ git push remotename psuh
677698

678699
Now you should be able to go and check out your newly created branch on GitHub.
679700

701+
[[send-pr-ggg]]
680702
=== Sending a PR to GitGitGadget
681703

682704
In order to have your code tested and formatted for review, you need to start by
@@ -688,6 +710,7 @@ appear with the name of your newly pushed branch.
688710
Review the PR's title and description, as it's used by GitGitGadget as the cover
689711
letter for your change. When you're happy, submit your pull request.
690712

713+
[[run-ci-ggg]]
691714
=== Running CI and Getting Ready to Send
692715

693716
If it's your first time using GitGitGadget (which is likely, as you're using
@@ -712,15 +735,18 @@ your patch is accepted into `next`.
712735
TODO https://github.com/gitgitgadget/gitgitgadget/issues/83
713736
It'd be nice to be able to verify that the patch looks good before sending it
714737
to everyone on Git mailing list.
738+
[[check-work-ggg]]
715739
=== Check Your Work
716740
////
717741

742+
[[send-mail-ggg]]
718743
=== Sending Your Patches
719744

720745
Now that your CI is passing and someone has granted you permission to use
721746
GitGitGadget with the `/allow` command, sending out for review is as simple as
722747
commenting on your PR with `/submit`.
723748

749+
[[responding-ggg]]
724750
=== Updating With Comments
725751

726752
Skip ahead to <<reviewing,Responding to Reviews>> for information on how to
@@ -742,6 +768,7 @@ of what they're looking at. When the CI is done running, you can comment once
742768
more with `/submit` - GitGitGadget will automatically add a v2 mark to your
743769
changes.
744770

771+
[[howto-git-send-email]]
745772
== Sending Patches with `git send-email`
746773

747774
If you don't want to use GitGitGadget, you can also use Git itself to mail your
@@ -750,6 +777,7 @@ subject line (for example, being able to use the tag [RFC PATCH] in the subject)
750777
and being able to send a ``dry run'' mail to yourself to ensure it all looks
751778
good before going out to the list.
752779

780+
[[setup-git-send-email]]
753781
=== Prerequisite: Setting Up `git send-email`
754782

755783
Configuration for `send-email` can vary based on your operating system and email
@@ -761,6 +789,7 @@ determine the right way to configure it to use your SMTP server; again, as this
761789
configuration can change significantly based on your system and email setup, it
762790
is out of scope for the context of this tutorial.
763791

792+
[[format-patch]]
764793
=== Preparing Initial Patchset
765794

766795
Sending emails with Git is a two-part process; before you can prepare the emails
@@ -799,6 +828,7 @@ but want reviewers to look at what they have so far. You can add this flag with
799828
Check and make sure that your patches and cover letter template exist in the
800829
directory you specified - you're nearly ready to send out your review!
801830

831+
[[cover-letter]]
802832
=== Preparing Email
803833

804834
In addition to an email per patch, the Git community also expects your patches
@@ -862,6 +892,7 @@ The one generated for `psuh` from the sample implementation looks like this:
862892
Finally, the letter will include the version of Git used to generate the
863893
patches. You can leave that string alone.
864894

895+
[[sending-git-send-email]]
865896
=== Sending Email
866897

867898
At this point you should have a directory `psuh/` which is filled with your
@@ -886,6 +917,7 @@ press `y` or `a` at these prompts your emails will be sent! Congratulations!
886917
Awesome, now the community will drop everything and review your changes. (Just
887918
kidding - be patient!)
888919

920+
[[v2-git-send-email]]
889921
=== Sending v2
890922

891923
Skip ahead to <<reviewing,Responding to Reviews>> for information on how to
@@ -944,6 +976,7 @@ $ git send-email [email protected]
944976
psuh/v2*
945977
----
946978

979+
[[single-patch]]
947980
=== Bonus Chapter: One-Patch Changes
948981

949982
In some cases, your very small change may consist of only one patch. When that
@@ -991,6 +1024,7 @@ index 88f126184c..38da593a60 100644
9911024
2.21.0.392.gf8f6787159e-goog
9921025
----
9931026

1027+
[[now-what]]
9941028
== My Patch Got Emailed - Now What?
9951029

9961030
[[reviewing]]
@@ -1034,6 +1068,7 @@ changing history, but since it's local history which you haven't shared with
10341068
anyone, that is okay for now! (Later, it may not make sense to do this; take a
10351069
look at the section below this one for some context.)
10361070

1071+
[[after-approval]]
10371072
=== After Review Approval
10381073

10391074
The Git project has four integration branches: `pu`, `next`, `master`, and

0 commit comments

Comments
 (0)