100
/// <exception cref="NGit.Api.Errors.JGitInternalException"></exception>
100
/// <summary>Execute the SubmoduleUpdateCommand command.</summary>
101
/// <remarks>Execute the SubmoduleUpdateCommand command.</remarks>
102
/// <returns>a collection of updated submodule paths</returns>
103
/// <exception cref="NGit.Api.Errors.ConcurrentRefUpdateException">NGit.Api.Errors.ConcurrentRefUpdateException
105
/// <exception cref="NGit.Api.Errors.CheckoutConflictException">NGit.Api.Errors.CheckoutConflictException
107
/// <exception cref="NGit.Api.Errors.InvalidMergeHeadsException">NGit.Api.Errors.InvalidMergeHeadsException
109
/// <exception cref="NGit.Api.Errors.InvalidConfigurationException">NGit.Api.Errors.InvalidConfigurationException
111
/// <exception cref="NGit.Api.Errors.NoHeadException">NGit.Api.Errors.NoHeadException
113
/// <exception cref="NGit.Api.Errors.NoMessageException">NGit.Api.Errors.NoMessageException
115
/// <exception cref="NGit.Api.Errors.RefNotFoundException">NGit.Api.Errors.RefNotFoundException
117
/// <exception cref="NGit.Api.Errors.WrongRepositoryStateException">NGit.Api.Errors.WrongRepositoryStateException
119
/// <exception cref="NGit.Api.Errors.GitAPIException">NGit.Api.Errors.GitAPIException
101
121
public override ICollection<string> Call()
137
157
submoduleRepo = clone.Call().GetRepository();
139
RevWalk walk = new RevWalk(submoduleRepo);
140
RevCommit commit = walk.ParseCommit(generator.GetObjectId());
141
string update = generator.GetConfigUpdate();
142
if (ConfigConstants.CONFIG_KEY_MERGE.Equals(update))
144
MergeCommand merge = new MergeCommand(submoduleRepo);
145
merge.Include(commit);
150
if (ConfigConstants.CONFIG_KEY_REBASE.Equals(update))
161
RevWalk walk = new RevWalk(submoduleRepo);
162
RevCommit commit = walk.ParseCommit(generator.GetObjectId());
163
string update = generator.GetConfigUpdate();
164
if (ConfigConstants.CONFIG_KEY_MERGE.Equals(update))
152
RebaseCommand rebase = new RebaseCommand(submoduleRepo);
153
rebase.SetUpstream(commit);
166
MergeCommand merge = new MergeCommand(submoduleRepo);
167
merge.Include(commit);
158
// Checkout commit referenced in parent repository's index
159
// as a detached HEAD
160
DirCacheCheckout co = new DirCacheCheckout(submoduleRepo, submoduleRepo.LockDirCache
162
co.SetFailOnConflict(true);
164
RefUpdate refUpdate = submoduleRepo.UpdateRef(Constants.HEAD, true);
165
refUpdate.SetNewObjectId(commit);
166
refUpdate.ForceUpdate();
172
if (ConfigConstants.CONFIG_KEY_REBASE.Equals(update))
174
RebaseCommand rebase = new RebaseCommand(submoduleRepo);
175
rebase.SetUpstream(commit);
180
// Checkout commit referenced in parent repository's
181
// index as a detached HEAD
182
DirCacheCheckout co = new DirCacheCheckout(submoduleRepo, submoduleRepo.LockDirCache
184
co.SetFailOnConflict(true);
186
RefUpdate refUpdate = submoduleRepo.UpdateRef(Constants.HEAD, true);
187
refUpdate.SetNewObjectId(commit);
188
refUpdate.ForceUpdate();
194
submoduleRepo.Close();
169
196
updated.AddItem(generator.GetPath());
177
204
catch (ConfigInvalidException e)
179
throw new JGitInternalException(e.Message, e);
181
catch (GitAPIException e)
183
throw new JGitInternalException(e.Message, e);
206
throw new InvalidConfigurationException(e.Message, e);