1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44 package org.eclipse.jgit.internal.storage.dfs;
45
46 import java.io.IOException;
47 import java.io.InputStream;
48 import java.text.MessageFormat;
49 import java.util.Collections;
50
51 import org.eclipse.jgit.attributes.AttributesNode;
52 import org.eclipse.jgit.attributes.AttributesNodeProvider;
53 import org.eclipse.jgit.attributes.AttributesRule;
54 import org.eclipse.jgit.internal.JGitText;
55 import org.eclipse.jgit.lib.Constants;
56 import org.eclipse.jgit.lib.RefUpdate;
57 import org.eclipse.jgit.lib.ReflogReader;
58 import org.eclipse.jgit.lib.Repository;
59 import org.eclipse.jgit.lib.StoredConfig;
60
61
62 public abstract class DfsRepository extends Repository {
63 private final DfsConfig config;
64
65 private final DfsRepositoryDescription description;
66
67
68
69
70
71
72
73 protected DfsRepository(DfsRepositoryBuilder builder) {
74 super(builder);
75 this.config = new DfsConfig();
76 this.description = builder.getRepositoryDescription();
77 }
78
79 @Override
80 public abstract DfsObjDatabase getObjectDatabase();
81
82
83 public DfsRepositoryDescription getDescription() {
84 return description;
85 }
86
87
88
89
90
91
92
93
94 public boolean exists() throws IOException {
95 if (getRefDatabase() instanceof DfsRefDatabase) {
96 return ((DfsRefDatabase) getRefDatabase()).exists();
97 }
98 return true;
99 }
100
101 @Override
102 public void create(boolean bare) throws IOException {
103 if (exists())
104 throw new IOException(MessageFormat.format(
105 JGitText.get().repositoryAlreadyExists, ""));
106
107 String master = Constants.R_HEADS + Constants.MASTER;
108 RefUpdate.Result result = updateRef(Constants.HEAD, true).link(master);
109 if (result != RefUpdate.Result.NEW)
110 throw new IOException(result.name());
111 }
112
113 @Override
114 public StoredConfig getConfig() {
115 return config;
116 }
117
118 @Override
119 public void scanForRepoChanges() throws IOException {
120 getRefDatabase().refresh();
121 getObjectDatabase().clearCache();
122 }
123
124 @Override
125 public void notifyIndexChanged() {
126
127
128 }
129
130 @Override
131 public ReflogReader getReflogReader(String refName) throws IOException {
132 throw new UnsupportedOperationException();
133 }
134
135 @Override
136 public AttributesNodeProvider createAttributesNodeProvider() {
137
138
139 return new EmptyAttributesNodeProvider();
140 }
141
142 private static class EmptyAttributesNodeProvider implements
143 AttributesNodeProvider {
144 private EmptyAttributesNode emptyAttributesNode = new EmptyAttributesNode();
145
146 @Override
147 public AttributesNode getInfoAttributesNode() throws IOException {
148 return emptyAttributesNode;
149 }
150
151 @Override
152 public AttributesNode getGlobalAttributesNode() throws IOException {
153 return emptyAttributesNode;
154 }
155
156 private static class EmptyAttributesNode extends AttributesNode {
157
158 public EmptyAttributesNode() {
159 super(Collections.<AttributesRule> emptyList());
160 }
161
162 @Override
163 public void parse(InputStream in) throws IOException {
164
165 }
166 }
167 }
168 }