Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP

Loading…

The mirror of GNU Emacs seems to be gone. #5

Closed
ruediger opened this Issue · 9 comments

4 participants

@ruediger

https://github.com/emacsmirror/emacs

says

There is nothing to see here yet.

Move along now.
@tarsius
Owner

Yes, the repository has disappeared. I am very sorry for any inconvenience this has causes. It most likely is my fault.

I recreated the repository but was unable to push to it.

$ git push --all mirror
Counting objects: 702214, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (139234/139234), done.
remote: error: object 676f341671bedf6007a029bb2f3c472ebe308603:invalid author/committer line - missing space before email
remote: fatal: Error in object
error: pack-objects died of signal 13
error: failed to push some refs to 'git@github.com:emacsmirror/emacs.git'
1 $ git show 676f341671bedf6007a029bb2f3c472ebe308603
commit 676f341671bedf6007a029bb2f3c472ebe308603
Author:  <Thomas>
Date:   Wed May 7 19:19:04 1997 +0000

    Recognize either / or - as a machine/suptype separator from uname -m
    to cope with older systems that have the older uname.

diff --git a/config.guess b/config.guess
...

Notice the Author: line; it looks invalid. Git can live with that and previous versions of libgit apparently did so too; but the currently libgit doesn't. Or at least I think this is the reason why I cannot push.

I just noticed yesterday that the repository has disappeared and haven't found the time to investigate this properly yet. I was going to open an issue here myself but you beat me to it :-)

I am not sure yet how the repository got deleted but I do know that I haven't deleted it manually and certainly not intentionally.

The most likely thing to have happened is that it got removed when I removed all repositories that mirrored individual built-in packages (extracted from the emacs-24 branch of Emacs). One of these packages is named emacs (it contains all elisp libraries that are not explicitly assigned to a package). I though I have taken care to exclude it from deletion but since I no longer have the code used for that one-time cleanup I cannot verify whether that actually is the case.

In the meantime please use the official git mirror, one of the other mirrors, or (if you have git-1.8.*) even import yourself (see http://www.emacswiki.org/emacs-test/EmacsFromGit). It took my about an our to clone the trunk branch using git clone bzr://....

Unfortunately the official git mirror (which in turn used to be mirrored on the Emacsmirror) and the new import using the above method have not a single commit in common and I until I have gotten some sleep I won't be able to figure out why that is so:

$ git log --oneline --reverse old/trunk | head -n 1
ce55841 entered into RCS
$ git log --oneline --reverse master | head -n 1
aefe277 entered into RCS
$ git show --format=raw ce55841 > old
$ git show --format=raw aefe277 > new
$ diff -u old new
--- old 2013-04-10 00:22:33.877136666 +0200
+++ new 2013-04-10 00:22:41.613136721 +0200
@@ -1,4 +1,4 @@
-commit ce5584125c44a1a2fbb46e810459c50b227a95e2
+commit aefe277d4270d8d233f02578357374f0443b8241
 tree 91d9a372bbcbf763f82a136f5edef3d55491f34c
 author Jim Blandy <jimb@redhat.com> 482633309 +0000
 committer Jim Blandy <jimb@redhat.com> 482633309 +0000

The trees are identical (91d9a372bbcbf763f82a136f5edef3d55491f34c), both commits have no parent and still they have different hashes. How is that even possible? Help figuring this out is appreciated.

I have started pushing the new history:

$ git push git@github.com:emacsmirror/emacs.git master
Counting objects: 675075, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (135660/135660), done.
^Citing objects:  16% (110369/675075), 23.04 MiB | 292 KiB/s

It didn't error out immediately like pushing the old history did. But I have not actually tried to complete the push, I am confident it would succeed though.

The official git mirror and the one on the Emacsmirror should have the same history. Users should also be able to import from bzr using the "common tool" themselves and get the same history. Very soon that tool will be git itself since there is no reason to prefer any of the crappy tools that are currently in use to the support built into git itself.

So, I do think that the official git mirror should be recreated using git clone bzr://..., until then the mirror on the Emacsmirror will remain empty because I cannot push the old history I have gotten from the official mirror and do not want to push history which is not identical to whatever is on the official mirror.

(If I weren't so tired I would have written a shorter message.)

@daveloyall

Ack, the following email has been sitting in my inbox since Friday...

TL;DR: Tarsius, please email support@github.com and ask them to review them to comment on this issue.

From: support@github.com
Subject: Re: remote: fatal: Error in object

Hey Dave,

We can definitely investigate this further if you want to leave a comment in that issue asking the maintainer to get in touch with us. Since this could involve working with repositories that belong to particular accounts, we'll just need to speak directly with them.

It sounds like they're interested in resolving this, so we can for sure work with them if they contact us.

Thanks for the heads up! I'm sure emacs users will appreciate it.
Robert

Can you help? I'm pretty sure that https://github.com/emacsmirror/emacs was pretty popular up until ten days ago...

@tarsius
Owner

The reason I cannot push is that there is at least one commit with author information like " bob@example.com"; the name part is missing. That wasn't a problem for a long time but it seems github is using a new version of libgit (or whatever they are using) which considers this to be invalid.

The reason git-remote-bzr produces history which is different from what hg-git and bzr-fast-export | git fast-import produce is that the former properly converts bzr to git commit messages, while the latter to do not. git stores a newline at the end of each commit message, bzr does not.

I will eventually contact github about these issues, but it might not be before next weekend.

@rtomayko

Hi, GitHub here. I've disabled the fsck checks on push for the emacsmirror/emacs repository. You should be able to push the invalid commit in now. Would you mind trying the push --mirror again?

I can't promise the commit won't cause some problems on the site but it should work fine for the most part.

Let me know if I can help out with anything else.

@tarsius
Owner

Thanks. I just successfully pushed the master branch.

I assume that disabling the fsck won't automatically propagate to all forks of emacsmirror/emacs. If that is so (and I certainly don't ask you to somehow make this happen) then this is of limited use. While forking might work these forks might later blow up in some unexpected way. Maybe just pushing a new branch which also contains the bad commits might be enough.

I have decided that I will recreate the mirror of emacs using git remote-bzr and give up on it being compatible to the mirror on savannah. I will put up a big, fat warning. Using git remote-bzr is much better than other options among other things because it allows users to pull from the bzr directly. Since I am not going to update this mirror daily that is quite important.

So thanks again but could you please revert. Actually since this repository has now been messed around in unusual way should I just delete it and recreate it? Would that remove all traces of this hack?

@tarsius
Owner

I have considered pushing both the git remote-bzr and the fast-export generated history to emacsmirror/emacs but that would inconvenient users who want to use the remote-bzr generated history.

Actually I would like to mirror both histories (at least for now) but in different repositories. Can I just rename emacsmirror/emacs to emacsmirror/emacs-savannah for the old history and recreate emacsmirror/emacs for the new history? Will the disabled fsck be moved when I do that?

@rtomayko

I assume that disabling the fsck won't automatically propagate to all forks of emacsmirror/emacs. If that is so (and I certainly don't ask you to somehow make this happen) then this is of limited use. While forking might work these forks might later blow up in some unexpected way. Maybe just pushing a new branch which also contains the bad commits might be enough.

This is all correct. However, in the past with this same sort of situation we've seen forks not suffer from many issues in practice. The fsck errors will not fire unless an entirely new bad commit is pushed into the repository. Unless you're rewriting large amounts of history going back to the bad commit, it should probably be fine.

Actually I would like to mirror both histories (at least for now) but in different repositories. Can I just rename emacsmirror/emacs to emacsmirror/emacs-savannah for the old history and recreate emacsmirror/emacs for the new history? Will the disabled fsck be moved when I do that?

Yes, this all sounds like it will work just fine. The disabled fsck config will be retained in the renamed repository and the new repository will have fsck enabled. Give it a shot and let me know if you run into problems.

@tarsius
Owner

@ruediger the mirror is up again. Actually there are two now... see the readme for details.

@rtomayko thanks a lot.

@tarsius tarsius closed this
@ruediger

Thanks everybody!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Something went wrong with that request. Please try again.