Skip to content

Commit 9a95341

Browse files
committed
gitprotocol-http: document invalid 'want' error handling
Add documentation explaining how the server should handle invalid 'want' requests in the HTTP protocol. When a client requests an object that does not exist or is not reachable from any advertised reference, the server must reject the request with an error message. This clarification ensures contributors understand how Git prevents clients from requesting non-existent objects, and improves the accuracy of the protocol documentation. Signed-off-by: Queen Ediri Jessa <qjessa662@gmail.com>
1 parent 18ae332 commit 9a95341

File tree

2 files changed

+211
-1
lines changed

2 files changed

+211
-1
lines changed
Lines changed: 196 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,196 @@
1+
From 18ae332f0a6675f890fa328d541fc9203d66b871 Mon Sep 17 00:00:00 2001
2+
From: QueenJcloud <qjessa662@gmail.com>
3+
Date: Fri, 24 Oct 2025 13:58:14 +0100
4+
Subject: [PATCH 1/2] MyFirstContribution: add note on confirming patches
5+
6+
Add a note after the `git send-email` section explaining how
7+
contributors can confirm that their patches reached the mailing
8+
list by checking https://lore.kernel.org/git/. This helps
9+
contributors verify that their emails were successfully delivered.
10+
11+
Signed-off-by: QueenJcloud <qjessa662@gmail.com>
12+
---
13+
Changes since v2:
14+
- Distinctive/correct name to the email
15+
- Added changelog note after '---'
16+
- Removed extra blank line at the end of the section
17+
- No other text or formatting changes
18+
---
19+
Documentation/MyFirstContribution.adoc | 6 ++-
20+
...bution-add-note-on-confirming-patche.patch | 39 ++++++++++++++++
21+
...bution-add-note-on-confirming-patche.patch | 46 +++++++++++++++++++
22+
3 files changed, 90 insertions(+), 1 deletion(-)
23+
create mode 100644 v2-0001-MyFirstContribution-add-note-on-confirming-patche.patch
24+
create mode 100644 v3-0001-MyFirstContribution-add-note-on-confirming-patche.patch
25+
26+
diff --git a/Documentation/MyFirstContribution.adoc b/Documentation/MyFirstContribution.adoc
27+
index 02ba8ba5f6..95f96b8451 100644
28+
--- a/Documentation/MyFirstContribution.adoc
29+
+++ b/Documentation/MyFirstContribution.adoc
30+
@@ -1153,11 +1153,15 @@ NOTE: When you are sending a real patch, it will go to git@vger.kernel.org - but
31+
please don't send your patchset from the tutorial to the real mailing list! For
32+
now, you can send it to yourself, to make sure you understand how it will look.
33+
34+
+NOTE: After sending your patches, you can confirm that they reached the mailing
35+
+list by visiting https://lore.kernel.org/git/. Use the search bar to find your
36+
+name or the subject of your patch. If it appears, your email was successfully
37+
+delivered.
38+
+
39+
After you run the command above, you will be presented with an interactive
40+
prompt for each patch that's about to go out. This gives you one last chance to
41+
edit or quit sending something (but again, don't edit code this way). Once you
42+
press `y` or `a` at these prompts your emails will be sent! Congratulations!
43+
-
44+
Awesome, now the community will drop everything and review your changes. (Just
45+
kidding - be patient!)
46+
47+
diff --git a/v2-0001-MyFirstContribution-add-note-on-confirming-patche.patch b/v2-0001-MyFirstContribution-add-note-on-confirming-patche.patch
48+
new file mode 100644
49+
index 0000000000..0e29510cba
50+
--- /dev/null
51+
+++ b/v2-0001-MyFirstContribution-add-note-on-confirming-patche.patch
52+
@@ -0,0 +1,39 @@
53+
+From b6e46728e3ce0714c03b9af548b734deadd95ca3 Mon Sep 17 00:00:00 2001
54+
+From: QueenJcloud <qjessa662@gmail.com>
55+
+Date: Fri, 24 Oct 2025 13:58:14 +0100
56+
+Subject: [PATCH v2] MyFirstContribution: add note on confirming patches
57+
+
58+
+Add a note after the `git send-email` section explaining how
59+
+contributors can confirm that their patches reached the mailing
60+
+list by checking https://lore.kernel.org/git/.
61+
+
62+
+Signed-off-by: QueenJcloud <qjessa662@gmail.com>
63+
+---
64+
+ Documentation/MyFirstContribution.adoc | 6 ++++++
65+
+ 1 file changed, 6 insertions(+)
66+
+
67+
+diff --git a/Documentation/MyFirstContribution.adoc b/Documentation/MyFirstContribution.adoc
68+
+index 02ba8ba5f6..6e7f3036bb 100644
69+
+--- a/Documentation/MyFirstContribution.adoc
70+
++++ b/Documentation/MyFirstContribution.adoc
71+
+@@ -1153,11 +1153,17 @@ NOTE: When you are sending a real patch, it will go to git@vger.kernel.org - but
72+
+ please don't send your patchset from the tutorial to the real mailing list! For
73+
+ now, you can send it to yourself, to make sure you understand how it will look.
74+
+
75+
++NOTE: After sending your patches, you can confirm that they reached the mailing
76+
++list by visiting https://lore.kernel.org/git/. Use the search bar to find your
77+
++name or the subject of your patch. If it appears, your email was successfully
78+
++delivered.
79+
++
80+
+ After you run the command above, you will be presented with an interactive
81+
+ prompt for each patch that's about to go out. This gives you one last chance to
82+
+ edit or quit sending something (but again, don't edit code this way). Once you
83+
+ press `y` or `a` at these prompts your emails will be sent! Congratulations!
84+
+
85+
++
86+
+ Awesome, now the community will drop everything and review your changes. (Just
87+
+ kidding - be patient!)
88+
+
89+
+--
90+
+2.51.0.573.gb660e2dcb9
91+
+
92+
diff --git a/v3-0001-MyFirstContribution-add-note-on-confirming-patche.patch b/v3-0001-MyFirstContribution-add-note-on-confirming-patche.patch
93+
new file mode 100644
94+
index 0000000000..d5fe3e0bae
95+
--- /dev/null
96+
+++ b/v3-0001-MyFirstContribution-add-note-on-confirming-patche.patch
97+
@@ -0,0 +1,46 @@
98+
+From ad52256dcdfa5080dcba9451a67af1d3f89ba26d Mon Sep 17 00:00:00 2001
99+
+From: QueenJcloud <qjessa662@gmail.com>
100+
+Date: Fri, 24 Oct 2025 13:58:14 +0100
101+
+Subject: [PATCH v3] MyFirstContribution: add note on confirming patches
102+
+
103+
+Add a note after the `git send-email` section explaining how
104+
+contributors can confirm that their patches reached the mailing
105+
+list by checking https://lore.kernel.org/git/. This helps
106+
+contributors verify that their emails were successfully delivered.
107+
+
108+
+Signed-off-by: QueenJcloud <qjessa662@gmail.com>
109+
+---
110+
+Changes since v2:
111+
+- Distinctive/correct name to the email
112+
+- Added changelog note after '---'
113+
+- Removed extra blank line at the end of the section
114+
+- No other text or formatting changes
115+
+---
116+
+ Documentation/MyFirstContribution.adoc | 6 ++++++
117+
+ 1 file changed, 6 insertions(+)
118+
+
119+
+diff --git a/Documentation/MyFirstContribution.adoc b/Documentation/MyFirstContribution.adoc
120+
+index 02ba8ba5f6..6e7f3036bb 100644
121+
+--- a/Documentation/MyFirstContribution.adoc
122+
++++ b/Documentation/MyFirstContribution.adoc
123+
+@@ -1153,11 +1153,17 @@ NOTE: When you are sending a real patch, it will go to git@vger.kernel.org - but
124+
+ please don't send your patchset from the tutorial to the real mailing list! For
125+
+ now, you can send it to yourself, to make sure you understand how it will look.
126+
+
127+
++NOTE: After sending your patches, you can confirm that they reached the mailing
128+
++list by visiting https://lore.kernel.org/git/. Use the search bar to find your
129+
++name or the subject of your patch. If it appears, your email was successfully
130+
++delivered.
131+
++
132+
+ After you run the command above, you will be presented with an interactive
133+
+ prompt for each patch that's about to go out. This gives you one last chance to
134+
+ edit or quit sending something (but again, don't edit code this way). Once you
135+
+ press `y` or `a` at these prompts your emails will be sent! Congratulations!
136+
+
137+
++
138+
+ Awesome, now the community will drop everything and review your changes. (Just
139+
+ kidding - be patient!)
140+
+
141+
+--
142+
+2.51.0.573.gb660e2dcb9
143+
+
144+
--
145+
2.51.0.573.gb660e2dcb9
146+
147+
148+
From 7527b2986f3175a2746f0b6221fe56f9fc126440 Mon Sep 17 00:00:00 2001
149+
From: QueenJcloud <qjessa662@gmail.com>
150+
Date: Thu, 30 Oct 2025 22:21:35 +0100
151+
Subject: [PATCH 2/2] gitprotocol-http: document invalid 'want' error handling
152+
153+
Add documentation explaining how the server should handle invalid
154+
'want' requests in the HTTP protocol. When a client requests an object
155+
that does not exist or is not reachable from any advertised reference,
156+
the server must reject the request with an error message.
157+
158+
This clarification ensures contributors understand how Git prevents
159+
clients from requesting non-existent objects, and improves the accuracy
160+
of the protocol documentation.
161+
162+
Signed-off-by: Queen Ediri Jessa <qjessa662@gmail.com>
163+
---
164+
Documentation/gitprotocol-http.adoc | 16 +++++++++++++++-
165+
1 file changed, 15 insertions(+), 1 deletion(-)
166+
167+
diff --git a/Documentation/gitprotocol-http.adoc b/Documentation/gitprotocol-http.adoc
168+
index d024010414..19b5628e73 100644
169+
--- a/Documentation/gitprotocol-http.adoc
170+
+++ b/Documentation/gitprotocol-http.adoc
171+
@@ -443,7 +443,21 @@ If no "want" objects are received, send an error:
172+
TODO: Define error if no "want" lines are requested.
173+
174+
If any "want" object is not reachable, send an error:
175+
-TODO: Define error if an invalid "want" is requested.
176+
+
177+
+If the client sends a `want` line referring to an object that does not
178+
+exist on the server, or that is not reachable from any advertised
179+
+reference, the server must reject the request. In such cases, the
180+
+server terminates the negotiation with an error response.
181+
+
182+
+This ensures that the client only receives valid objects that are part
183+
+of the repository’s reachable history. The server may return an error
184+
+message such as:
185+
+
186+
+ error: invalid want <object-id>
187+
+
188+
+to indicate that the requested object could not be found. No packfile
189+
+is generated for invalid requests, and the client should not retry
190+
+with the same object ID.
191+
192+
Create an empty list, `s_common`.
193+
194+
--
195+
2.51.0.573.gb660e2dcb9
196+

Documentation/gitprotocol-http.adoc

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -443,7 +443,21 @@ If no "want" objects are received, send an error:
443443
TODO: Define error if no "want" lines are requested.
444444
445445
If any "want" object is not reachable, send an error:
446-
TODO: Define error if an invalid "want" is requested.
446+
447+
If the client sends a `want` line referring to an object that does not
448+
exist on the server, or that is not reachable from any advertised
449+
reference, the server must reject the request. In such cases, the
450+
server terminates the negotiation with an error response.
451+
452+
This ensures that the client only receives valid objects that are part
453+
of the repository’s reachable history. The server may return an error
454+
message such as:
455+
456+
error: invalid want <object-id>
457+
458+
to indicate that the requested object could not be found. No packfile
459+
is generated for invalid requests, and the client should not retry
460+
with the same object ID.
447461
448462
Create an empty list, `s_common`.
449463

0 commit comments

Comments
 (0)