git/list[1] front-page[2] threads[3] people[4] search[5] about
 

[PATCH v3 6/6] merge-recursive: add pointer about unduly complex looking code

From
Elijah Newren <newren@gmail.com>
Date
Jun 10, 2018, 04:16 UTC
Message-ID
<20180610041616.4448-7-newren@gmail.com>
In-Reply-To
<20180610041616.4448-1-newren@gmail.com>

handle_change_delete() has a block of code displaying one of four nearly identical messages. Each contains about half a dozen variable interpolations, which use nearly identical variables as well. Someone trying to parse this may be slowed down trying to parse the differences and why they are here; help them out by adding a comment explaining the differences.

Further, point out that this code structure isn't collapsed into something more concise and readable for the programmer, because we want to keep full messages intact in order to make translators' jobs much easier.

Signed-off-by: Elijah Newren <newren@gmail.com>
---
 merge-recursive.c | 15 +++++++++++++++
 1 file changed, 15 insertions(+)
diff --git a/merge-recursive.c b/merge-recursive.c
index 7cf11dc04c..284b27d895 100644
--- a/merge-recursive.c
+++ b/merge-recursive.c
@@ -1476,6 +1476,21 @@ static int handle_change_delete(struct merge_options *o,
 		if (!ret)
 			ret = update_file(o, 0, o_oid, o_mode, update_path);
 	} else {
+		/*
+		 * Despite the four nearly duplicate messages and argument
+		 * lists below and the ugliness of the nested if-statements,
+		 * having complete messages makes the job easier for
+		 * translators.
+		 *
+		 * The slight variance among the cases is due to the fact
+		 * that:
+		 *   1) directory/file conflicts (in effect if
+		 *      !alt_path) could cause us to need to write the
+		 *      file to a different path.
+		 *   2) renames (in effect if !old_path) could mean that
+		 *      there are two names for the path that the user
+		 *      may know the file by.
+		 */
 		if (!alt_path) {
 			if (!old_path) {
 				output(o, 1, _("CONFLICT (%s/delete): %s deleted in %s "
-- 
2.18.0.rc1.6.gffeb3ef585
Previous: Elijah NewrenNext: Elijah Newren
Message 26 of 27 in “merge-recursive code cleanups”
  1. 0/5 merge-recursive code cleanupsElijah Newren, May 19, 2018
  2. 1/5 merge-recursive: fix miscellaneous grammar error in commentElijah Newren, May 19, 2018
  3. 5/5 merge-recursive: simplify handle_change_deleteElijah Newren, May 19, 2018
  4. Johannes SixtMay 19, 2018
  5. Elijah NewrenMay 19, 2018
  6. Johannes SchindelinMay 21, 2018
  7. Elijah NewrenMay 21, 2018
  8. 2/5 merge-recursive: fix numerous argument alignment issuesElijah Newren, May 19, 2018
  9. Johannes SchindelinMay 21, 2018
  10. Elijah NewrenMay 21, 2018
  11. 3/5 merge-recursive: clarify the rename_dir/RENAME_DIR meaningElijah Newren, May 19, 2018
  12. Johannes SchindelinMay 21, 2018
  13. 4/5 merge-recursive: rename conflict_rename_*() family of functionsElijah Newren, May 19, 2018
  14. Johannes SchindelinMay 21, 2018
  15. 0/5 merge-recursive code cleanupsElijah Newren, May 22, 2018
  16. 4/5 merge-recursive: rename conflict_rename_*() family of functionsElijah Newren, May 22, 2018
  17. 5/5 merge-recursive: add pointer about unduly complex looking codeElijah Newren, May 22, 2018
  18. 1/5 merge-recursive: fix miscellaneous grammar error in commentElijah Newren, May 22, 2018
  19. 2/5 merge-recursive: fix numerous argument alignment issuesElijah Newren, May 22, 2018
  20. 3/5 merge-recursive: clarify the rename_dir/RENAME_DIR meaningElijah Newren, May 22, 2018
  21. 0/6 merge-recursive code cleanupsElijah Newren, Jun 10, 2018
  22. 1/6 merge-recursive: fix miscellaneous grammar error in commentElijah Newren, Jun 10, 2018
  23. 2/6 merge-recursive: fix numerous argument alignment issuesElijah Newren, Jun 10, 2018
  24. 4/6 merge-recursive: clarify the rename_dir/RENAME_DIR meaningElijah Newren, Jun 10, 2018
  25. 3/6 merge-recursive: align labels with their respective code blocksElijah Newren, Jun 10, 2018
  26. 6/6 merge-recursive: add pointer about unduly complex looking codeElijah Newren, Jun 10, 2018
  27. 5/6 merge-recursive: rename conflict_rename_*() family of functionsElijah Newren, Jun 10, 2018

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.