View Javadoc
1   /*
2    * Copyright (C) 2008, Shawn O. Pearce <spearce@spearce.org> and others
3    *
4    * This program and the accompanying materials are made available under the
5    * terms of the Eclipse Distribution License v. 1.0 which is available at
6    * https://www.eclipse.org/org/documents/edl-v10.php.
7    *
8    * SPDX-License-Identifier: BSD-3-Clause
9    */
10  
11  package org.eclipse.jgit.revwalk;
12  
13  import java.text.MessageFormat;
14  
15  import org.eclipse.jgit.internal.JGitText;
16  
17  /**
18   * Application level mark bit for {@link org.eclipse.jgit.revwalk.RevObject}s.
19   * <p>
20   * To create a flag use
21   * {@link org.eclipse.jgit.revwalk.RevWalk#newFlag(String)}.
22   */
23  public class RevFlag {
24  	/**
25  	 * Uninteresting by {@link RevWalk#markUninteresting(RevCommit)}.
26  	 * <p>
27  	 * We flag commits as uninteresting if the caller does not want commits
28  	 * reachable from a commit to {@link RevWalk#markUninteresting(RevCommit)}.
29  	 * This flag is always carried into the commit's parents and is a key part
30  	 * of the "rev-list B --not A" feature; A is marked UNINTERESTING.
31  	 * <p>
32  	 * This is a static flag. Its RevWalk is not available.
33  	 */
34  	public static final RevFlag UNINTERESTING = new StaticRevFlag(
35  			"UNINTERESTING", RevWalk.UNINTERESTING); //$NON-NLS-1$
36  
37  	/**
38  	 * Set on RevCommit instances added to {@link RevWalk#pending} queue.
39  	 * <p>
40  	 * We use this flag to avoid adding the same commit instance twice to our
41  	 * queue, especially if we reached it by more than one path.
42  	 * <p>
43  	 * This is a static flag. Its RevWalk is not available.
44  	 *
45  	 * @since 3.0
46  	 */
47  	public static final RevFlag SEEN = new StaticRevFlag("SEEN", RevWalk.SEEN); //$NON-NLS-1$
48  
49  	final RevWalk walker;
50  
51  	final String name;
52  
53  	final int mask;
54  
55  	RevFlag(RevWalk w, String n, int m) {
56  		walker = w;
57  		name = n;
58  		mask = m;
59  	}
60  
61  	/**
62  	 * Get the revision walk instance this flag was created from.
63  	 *
64  	 * @return the walker this flag was allocated out of, and belongs to.
65  	 */
66  	public RevWalk getRevWalk() {
67  		return walker;
68  	}
69  
70  	/** {@inheritDoc} */
71  	@Override
72  	public String toString() {
73  		return name;
74  	}
75  
76  	static class StaticRevFlag extends RevFlag {
77  		StaticRevFlag(String n, int m) {
78  			super(null, n, m);
79  		}
80  
81  		@Override
82  		public RevWalk getRevWalk() {
83  			throw new UnsupportedOperationException(MessageFormat.format(
84  					JGitText.get().isAStaticFlagAndHasNorevWalkInstance, toString()));
85  		}
86  	}
87  }