Return 'this' from setters in commands

To avoid breaking ABI, take the opportunity to give these setters
(hopefully sometimes better) names and deprecate their old names.

Change-Id: Ib45011678c3d941f8ecc1a1e0fdf4c09cdc337e3
Signed-off-by: Mario Molina <mmolimar@gmail.com>
Signed-off-by: Jonathan Nieder <jrn@google.com>
This commit is contained in:
Mario Molina 2018-12-26 10:48:05 +01:00 committed by Jonathan Nieder
parent 062822dc41
commit 6c8240a751
3 changed files with 131 additions and 20 deletions

View File

@ -65,7 +65,7 @@
*/
public class RemoteRemoveCommand extends GitCommand<RemoteConfig> {
private String name;
private String remoteName;
/**
* <p>
@ -84,9 +84,24 @@ protected RemoteRemoveCommand(Repository repo) {
*
* @param name
* a remote name
* @deprecated use {@link #setRemoteName} instead
*/
@Deprecated
public void setName(String name) {
this.name = name;
this.remoteName = name;
}
/**
* The name of the remote to remove.
*
* @param remoteName
* a remote name
* @return {@code this}
* @since 5.3
*/
public RemoteRemoveCommand setRemoteName(String remoteName) {
this.remoteName = remoteName;
return this;
}
/**
@ -101,8 +116,8 @@ public RemoteConfig call() throws GitAPIException {
try {
StoredConfig config = repo.getConfig();
RemoteConfig remote = new RemoteConfig(config, name);
config.unsetSection(ConfigConstants.CONFIG_KEY_REMOTE, name);
RemoteConfig remote = new RemoteConfig(config, remoteName);
config.unsetSection(ConfigConstants.CONFIG_KEY_REMOTE, remoteName);
config.save();
return remote;
} catch (IOException | URISyntaxException e) {

View File

@ -66,11 +66,28 @@
*/
public class RemoteSetUrlCommand extends GitCommand<RemoteConfig> {
private String name;
/**
* The available URI types for the remote.
*
* @since 5.3
*/
public enum UriType {
/**
* Fetch URL for the remote.
*/
FETCH,
/**
* Push URL for the remote.
*/
PUSH
}
private URIish uri;
private boolean push;
private String remoteName;
private URIish remoteUri;
private UriType type;
/**
* <p>
@ -89,9 +106,24 @@ protected RemoteSetUrlCommand(Repository repo) {
*
* @param name
* a remote name
* @deprecated use {@link #setRemoteName} instead
*/
@Deprecated
public void setName(String name) {
this.name = name;
this.remoteName = name;
}
/**
* The name of the remote to change the URL for.
*
* @param remoteName
* a remote remoteName
* @return {@code this}
* @since 5.3
*/
public RemoteSetUrlCommand setRemoteName(String remoteName) {
this.remoteName = remoteName;
return this;
}
/**
@ -99,9 +131,24 @@ public void setName(String name) {
*
* @param uri
* an URL for the remote
* @deprecated use {@link #setRemoteUri} instead
*/
@Deprecated
public void setUri(URIish uri) {
this.uri = uri;
this.remoteUri = uri;
}
/**
* The new URL for the remote.
*
* @param remoteUri
* an URL for the remote
* @return {@code this}
* @since 5.3
*/
public RemoteSetUrlCommand setRemoteUri(URIish remoteUri) {
this.remoteUri = remoteUri;
return this;
}
/**
@ -110,9 +157,28 @@ public void setUri(URIish uri) {
* @param push
* <code>true</code> to set the push url, <code>false</code> to
* set the fetch url
* @deprecated use {@link #setUriType} instead
*/
@Deprecated
public void setPush(boolean push) {
this.push = push;
if (push) {
setUriType(UriType.PUSH);
} else {
setUriType(UriType.FETCH);
}
}
/**
* Whether to change the push URL of the remote instead of the fetch URL.
*
* @param type
* the <code>UriType</code> value to set
* @return {@code this}
* @since 5.3
*/
public RemoteSetUrlCommand setUriType(UriType type) {
this.type = type;
return this;
}
/**
@ -127,8 +193,8 @@ public RemoteConfig call() throws GitAPIException {
try {
StoredConfig config = repo.getConfig();
RemoteConfig remote = new RemoteConfig(config, name);
if (push) {
RemoteConfig remote = new RemoteConfig(config, remoteName);
if (type == UriType.PUSH) {
List<URIish> uris = remote.getPushURIs();
if (uris.size() > 1) {
throw new JGitInternalException(
@ -136,7 +202,7 @@ public RemoteConfig call() throws GitAPIException {
} else if (uris.size() == 1) {
remote.removePushURI(uris.get(0));
}
remote.addPushURI(uri);
remote.addPushURI(remoteUri);
} else {
List<URIish> uris = remote.getURIs();
if (uris.size() > 1) {
@ -145,7 +211,7 @@ public RemoteConfig call() throws GitAPIException {
} else if (uris.size() == 1) {
remote.removeURI(uris.get(0));
}
remote.addURI(uri);
remote.addURI(remoteUri);
}
remote.update(config);

View File

@ -96,9 +96,9 @@ public class StashApplyCommand extends GitCommand<ObjectId> {
private String stashRef;
private boolean applyIndex = true;
private boolean restoreIndex = true;
private boolean applyUntracked = true;
private boolean restoreUntracked = true;
private boolean ignoreRepositoryState;
@ -196,7 +196,7 @@ public ObjectId call() throws GitAPIException,
.getParent(1));
ObjectId stashHeadCommit = stashCommit.getParent(0);
ObjectId untrackedCommit = null;
if (applyUntracked && stashCommit.getParentCount() == 3)
if (restoreUntracked && stashCommit.getParentCount() == 3)
untrackedCommit = revWalk.parseCommit(stashCommit.getParent(2));
ResolveMerger merger = (ResolveMerger) strategy.newMerger(repo);
@ -216,7 +216,7 @@ public ObjectId call() throws GitAPIException,
dc, merger.getResultTreeId());
dco.setFailOnConflict(true);
dco.checkout(); // Ignoring failed deletes....
if (applyIndex) {
if (restoreIndex) {
ResolveMerger ixMerger = (ResolveMerger) strategy
.newMerger(repo, true);
ixMerger.setCommitNames(new String[] { "stashed HEAD", //$NON-NLS-1$
@ -277,9 +277,24 @@ public ObjectId call() throws GitAPIException,
*
* @param applyIndex
* true (default) if the command should restore the index state
* @deprecated use {@link #setRestoreIndex} instead
*/
@Deprecated
public void setApplyIndex(boolean applyIndex) {
this.applyIndex = applyIndex;
this.restoreIndex = applyIndex;
}
/**
* Whether to restore the index state
*
* @param restoreIndex
* true (default) if the command should restore the index state
* @return {@code this}
* @since 5.3
*/
public StashApplyCommand setRestoreIndex(boolean restoreIndex) {
this.restoreIndex = restoreIndex;
return this;
}
/**
@ -302,9 +317,24 @@ public StashApplyCommand setStrategy(MergeStrategy strategy) {
* @param applyUntracked
* true (default) if the command should restore untracked files
* @since 3.4
* @deprecated use {@link #setRestoreUntracked} instead
*/
@Deprecated
public void setApplyUntracked(boolean applyUntracked) {
this.applyUntracked = applyUntracked;
this.restoreUntracked = applyUntracked;
}
/**
* Whether the command should restore untracked files
*
* @param restoreUntracked
* true (default) if the command should restore untracked files
* @return {@code this}
* @since 5.3
*/
public StashApplyCommand setRestoreUntracked(boolean restoreUntracked) {
this.restoreUntracked = restoreUntracked;
return this;
}
private void resetIndex(RevTree tree) throws IOException {