View Javadoc
1   /*
2    * Copyright (C) 2008, Marek Zawirski <marek.zawirski@gmail.com>
3    * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> and others
4    *
5    * This program and the accompanying materials are made available under the
6    * terms of the Eclipse Distribution License v. 1.0 which is available at
7    * https://www.eclipse.org/org/documents/edl-v10.php.
8    *
9    * SPDX-License-Identifier: BSD-3-Clause
10   */
11  
12  package org.eclipse.jgit.revwalk;
13  
14  /**
15   * Sorting strategies supported by {@link org.eclipse.jgit.revwalk.RevWalk} and
16   * {@link org.eclipse.jgit.revwalk.ObjectWalk}.
17   */
18  public enum RevSort {
19  	/**
20  	 * No specific sorting is requested.
21  	 * <p>
22  	 * Applications should not rely upon the ordering produced by this strategy.
23  	 * Any ordering in the output is caused by low level implementation details
24  	 * and may change without notice.
25  	 */
26  	NONE,
27  
28  	/**
29  	 * Sort by commit time, descending (newest first, oldest last).
30  	 * <p>
31  	 * This strategy can be combined with {@link #TOPO}.
32  	 */
33  	COMMIT_TIME_DESC,
34  
35  	/**
36  	 * Topological sorting (all children before parents).
37  	 * <p>
38  	 * This strategy can be combined with {@link #COMMIT_TIME_DESC}.
39  	 */
40  	TOPO,
41  
42  	/**
43  	 * Topological sorting (all children before parents) without intermixing
44  	 * lines of history.
45  	 * <p>
46  	 * This behavior more closely resembles C Git's git-log --topo-order than
47  	 * {@link #TOPO}. See C Git's topo-order <a href=
48  	 * "https://git-scm.com/docs/git-log#Documentation/git-log.txt---topo-order">description</a>.
49  	 *
50  	 * @since 5.8
51  	 */
52  	TOPO_KEEP_BRANCH_TOGETHER,
53  
54  	/**
55  	 * Flip the output into the reverse ordering.
56  	 * <p>
57  	 * This strategy can be combined with the others described by this type as
58  	 * it is usually performed at the very end.
59  	 */
60  	REVERSE,
61  
62  	/**
63  	 * Include {@link RevFlag#UNINTERESTING} boundary commits after all others.
64  	 * In {@link ObjectWalk}, objects associated with such commits (trees,
65  	 * blobs), and all other objects marked explicitly as UNINTERESTING are also
66  	 * included.
67  	 * <p>
68  	 * A boundary commit is a UNINTERESTING parent of an interesting commit that
69  	 * was previously output.
70  	 */
71  	BOUNDARY;
72  }