A branch should either be a local copy of an svn branch, or a remote tracking branch. After a "git svn dcommit" a remote tracking branch could not be synced with the git remote due to the rebase that occured during the dcommit. Thus we check for a remote entry in the git config for the current branch and prohibit the "dcommit" if such an entry exists. --- git-svn.perl | 17 +++++++++++++++++ 1 files changed, 17 insertions(+), 0 deletions(-) diff --git a/git-svn.perl b/git-svn.perl index 4334b95..f9c8440 100755 --- a/git-svn.perl +++ b/git-svn.perl @@ -759,6 +759,23 @@ sub cmd_dcommit { 'Cannot dcommit with a dirty index. Commit your changes first, ' . "or stash them with `git stash'.\n"; $head ||= 'HEAD'; + my ($branches,$ctx) = eval { command_output_pipe('branch') }; + my $branch = undef; + while (<$branches>) { + chomp; + if (s/^\* +//) + { + $branch = $_; + } + } + command_close_pipe($branches, $ctx); + + my $remote = eval { command_oneline('config', '--get', + "branch.${branch}.remote") }; + if ($remote) { + die "You specified a non-svn remote for branch ${branch}.\n". + "To change this setting, modify \"branch.${branch}.remote\" using git config.\n"; + } my $old_head; if ($head ne 'HEAD') { -- 1.7.9.1 -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html