Re: Git fast-import : Warning duplicated ref: refs/remotes/origin/master
Show 5 quoted lines
> No, I actually still have the problem. The version commited on github
> is pulling revisions straight to refs/heads/master which is gross
> After discussing this matter with our teacher Matthieu Moy, I wanted
> to change this to refs/remotes/origin/master but then this warning
> gets thrown.
The following fixes it for me.
-- >8 --
Subject: use refs/mediawiki/<remote> namespace for private refs
Unless the "refspec" capability is used, the remote helper machinery expects remote helpers to write remote refs/heads/master ref to refs/heads/master. That's not very good since it scribbles on top of whatever local changes the user might have.
So specify a refspec that puts the refs elsewhere. For now this only works when fetching from a named remote, like so:
git remote add origin mediawiki::testwiki
git fetch origin
Attempting to fetch directly from a URL with a command like
"git fetch mediawiki::testwiki" produces an "Invalid refspec"
error.
---
git-remote-mediawiki | 10 ++++++----
1 files changed, 6 insertions(+), 4 deletions(-)
diff --git a/git-remote-mediawiki b/git-remote-mediawiki
index af66b58..7a3fdd3 100755
--- a/git-remote-mediawiki
+++ b/git-remote-mediawiki
@@ -7,6 +7,7 @@ use Storable qw(freeze thaw);
use DateTime::Format::ISO8601;
use Encode qw(encode_utf8);
+my $remotename = $ARGV[0];
my $url = $ARGV[1];
print STDERR "$url\n";
@@ -62,6 +63,7 @@ while ($loop) {
sub mw_capabilities {
# print STDOUT "fetch\n";
+ print STDOUT "refspec refs/heads/*:refs/mediawiki/$remotename/*\n";
print STDOUT "import\n";
print STDOUT "list\n";
print STDOUT "option\n";
@@ -91,7 +93,7 @@ sub mw_import {
sub get_last_revision {
# Get last commit sha1
- my $commit_sha1 = `git rev-parse refs/remotes/origin/master 2>/dev/null`;
+ my $commit_sha1 = `git rev-parse refs/mediawiki/$remotename/master 2>/dev/null`;
# Get note regarding that commit
chomp($commit_sha1);
@@ -202,15 +204,15 @@ sub mw_import {
# If it's a clone and the first revision, initalize this ref
if ($fetch_from == 1 && $n == 1) {
- #print "reset refs/remotes/origin/master\n";
+ #print "reset refs/mediawiki/$remotename/master\n";
}
- print "commit refs/remotes/origin/master\n";
+ print "commit refs/mediawiki/$remotename/master\n";
print "mark :$n\n";
print "committer $user <$user\@$wiki_name> ", $dt->epoch, " +0000\n";
print "data ", bytes::length(encode_utf8($comment)), "\n", encode_utf8($comment);
# If it's not a clone, needs to know where to start from
if ($fetch_from != 1 && $n == 1) {
- print "from refs/remotes/origin/master^0\n";
+ print "from refs/mediawiki/$remotename/master^0\n";
}
print "M 644 inline $title.wiki\n";
print "data ", bytes::length(encode_utf8($content)), "\n", encode_utf8($content);
--
1.7.5.3