- * would do if it were operating on the joined strings. The only difference
- * is that, beginning with protocol_version 29, a directory name will always
- * sort immediately prior to its contents (previously "foo." would sort in
- * between directory "foo" and "foo/bar"). We do this by assuming that a dir
- * has a trailing slash for comparison purposes, but only if we aren't about
- * to match a file of the same name (because we need all identically named
- * items to match each other). The dirname component can be an empty string,
- * but the basename component cannot (and never is in the current codebase).
- * The basename component may be NULL, in which case it is sorted to the end
- * of the list (as a removed item). */
+ * would do if it were operating on the joined strings.
+ *
+ * Some differences beginning with protocol_version 29: (1) directory names
+ * are compared with an assumed trailing slash so that they compare in a
+ * way that would cause them to sort immediately prior to any content they
+ * may have; (2) a directory of any name compares after a non-directory of
+ * any name at the same depth; (3) a directory with name "." compares prior
+ * to anything else. These changes mean that a directory and a non-dir
+ * with the same name will not compare as equal (protocol_version >= 29).
+ *
+ * The dirname component can be an empty string, but the basename component
+ * cannot (and never is in the current codebase). The basename component
+ * may be NULL (for a removed item), in which case it is considered to be
+ * after any existing item. */