Program: 7862
Project: 7862
Buggy source:
@Override public void execute(IAction act){
  resetState();
  try {
    buildIndexHeadDiffList();
  }
 catch (  IOException e) {
    Utils.handleError(getTargetPart().getSite().getShell(),e,UIText.CommitAction_errorDuringCommit,UIText.CommitAction_errorComputingDiffs);
    return;
  }
  Repository[] repos=getRepositoriesFor(getProjectsForSelectedResources());
  Repository repository=null;
  amendAllowed=repos.length == 1;
  for (  Repository repo : repos) {
    repository=repo;
    if (!repo.getRepositoryState().canCommit()) {
      MessageDialog.openError(getTargetPart().getSite().getShell(),UIText.CommitAction_cannotCommit,NLS.bind(UIText.CommitAction_repositoryState,repo.getRepositoryState().getDescription()));
      return;
    }
  }
  loadPreviousCommit();
  if (files.isEmpty()) {
    if (amendAllowed && previousCommit != null) {
      boolean result=MessageDialog.openQuestion(getTargetPart().getSite().getShell(),UIText.CommitAction_noFilesToCommit,UIText.CommitAction_amendCommit);
      if (!result)       return;
      amending=true;
    }
 else {
      MessageDialog.openWarning(getTargetPart().getSite().getShell(),UIText.CommitAction_noFilesToCommit,UIText.CommitAction_amendNotPossible);
      return;
    }
  }
  String author=null;
  String committer=null;
  if (repository != null) {
    final RepositoryConfig config=repository.getConfig();
    author=config.getAuthorName();
    final String authorEmail=config.getAuthorEmail();
    author=author + "String_Node_Str" + authorEmail+ "String_Node_Str";
    committer=config.getCommitterName();
    final String committerEmail=config.getCommitterEmail();
    committer=committer + "String_Node_Str" + committerEmail+ "String_Node_Str";
  }
  CommitDialog commitDialog=new CommitDialog(getTargetPart().getSite().getShell());
  commitDialog.setAmending(amending);
  commitDialog.setAmendAllowed(amendAllowed);
  commitDialog.setFileList(files);
  commitDialog.setAuthor(author);
  commitDialog.setCommitter(committer);
  if (previousCommit != null) {
    commitDialog.setPreviousCommitMessage(previousCommit.getMessage());
    PersonIdent previousAuthor=previousCommit.getAuthor();
    commitDialog.setPreviousAuthor(previousAuthor.getName() + "String_Node_Str" + previousAuthor.getEmailAddress()+ "String_Node_Str");
  }
  if (commitDialog.open() != IDialogConstants.OK_ID)   return;
  String commitMessage=commitDialog.getCommitMessage();
  amending=commitDialog.isAmending();
  try {
    performCommit(commitDialog,commitMessage);
  }
 catch (  TeamException e) {
    Utils.handleError(getTargetPart().getSite().getShell(),e,UIText.CommitAction_errorDuringCommit,UIText.CommitAction_errorOnCommit);
  }
}

Fixed version (ground truth):
@Override public void execute(IAction act){
  resetState();
  try {
    buildIndexHeadDiffList();
  }
 catch (  IOException e) {
    handle(new TeamException(UIText.CommitAction_errorComputingDiffs,e),UIText.CommitAction_errorDuringCommit,UIText.CommitAction_errorComputingDiffs);
    return;
  }
  Repository[] repos=getRepositoriesFor(getProjectsForSelectedResources());
  Repository repository=null;
  amendAllowed=repos.length == 1;
  for (  Repository repo : repos) {
    repository=repo;
    if (!repo.getRepositoryState().canCommit()) {
      MessageDialog.openError(getTargetPart().getSite().getShell(),UIText.CommitAction_cannotCommit,NLS.bind(UIText.CommitAction_repositoryState,repo.getRepositoryState().getDescription()));
      return;
    }
  }
  loadPreviousCommit();
  if (files.isEmpty()) {
    if (amendAllowed && previousCommit != null) {
      boolean result=MessageDialog.openQuestion(getTargetPart().getSite().getShell(),UIText.CommitAction_noFilesToCommit,UIText.CommitAction_amendCommit);
      if (!result)       return;
      amending=true;
    }
 else {
      MessageDialog.openWarning(getTargetPart().getSite().getShell(),UIText.CommitAction_noFilesToCommit,UIText.CommitAction_amendNotPossible);
      return;
    }
  }
  String author=null;
  String committer=null;
  if (repository != null) {
    final RepositoryConfig config=repository.getConfig();
    author=config.getAuthorName();
    final String authorEmail=config.getAuthorEmail();
    author=author + "String_Node_Str" + authorEmail+ "String_Node_Str";
    committer=config.getCommitterName();
    final String committerEmail=config.getCommitterEmail();
    committer=committer + "String_Node_Str" + committerEmail+ "String_Node_Str";
  }
  CommitDialog commitDialog=new CommitDialog(getTargetPart().getSite().getShell());
  commitDialog.setAmending(amending);
  commitDialog.setAmendAllowed(amendAllowed);
  commitDialog.setFileList(files);
  commitDialog.setAuthor(author);
  commitDialog.setCommitter(committer);
  if (previousCommit != null) {
    commitDialog.setPreviousCommitMessage(previousCommit.getMessage());
    PersonIdent previousAuthor=previousCommit.getAuthor();
    commitDialog.setPreviousAuthor(previousAuthor.getName() + "String_Node_Str" + previousAuthor.getEmailAddress()+ "String_Node_Str");
  }
  if (commitDialog.open() != IDialogConstants.OK_ID)   return;
  String commitMessage=commitDialog.getCommitMessage();
  amending=commitDialog.isAmending();
  try {
    performCommit(commitDialog,commitMessage);
  }
 catch (  TeamException e) {
    handle(e,UIText.CommitAction_errorDuringCommit,UIText.CommitAction_errorOnCommit);
  }
}