Skip to contentSkip to conversation

Odd problem in repository

DISCUSSION Clark Williams 4 participants 7 messages Jun 15, 2016

lore
Share & tools
lore
#0 lore raw

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Hello git-list,

We're experimenting with using git for the mock source repository on fedoraproject.org. The CVS repository was converted over and I successfully cloned a repository and went merrily on my way.

One of my collaborators cloned the repository the other day and found that it didn't have any branches in it. I cloned a temp copy of it and found that the files that normally would be in refs/heads to identify the branches had somehow been moved to the directory refs/remotes/origin. In my local repository (which was cloned immediately after the CVS import), if I list what's in refs/heads, I get this:

$ ls -F refs/heads
master  mock  mock-0-6-branch  mock-0.7  origin

on the whacky cloned copy, I get this:

$ ls -F refs/heads
master

and if I look in refs/remotes/origin:

$ ls -F refs/remotes/origin
HEAD  master  mock  mock-0-6-branch  mock-0.7  origin

Can anyone come up with a way that I could have mangled the repository with a push? I mean, I have no idea how that remotes/origin directory got created; I don't even have an interactive login on git.fedoraproject.org.

If anyone wants to see the repository, you can clone it from:

git://git.fedoraprojects.org/git/hosted/mock

I'm not sure if it makes sense to try and repair this or just start anew. Any advice would be appreciated.

Clark
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD4DBQFGLj0xqA4JVb61b9cRAhWYAJ49SDX6EnRxkFkJGjq5TUjhHjP2kwCWOJfK obOqRJwU0vOq/aZDsM3glw==
=XwQr
-----END PGP SIGNATURE-----

#1 lore raw
Quoted 4 lines · Clark Williams

If anyone wants to see the repository, you can clone it from:

git://git.fedoraprojects.org/git/hosted/mock

FYI, this should be:

git://git.fedoraproject.org/git/hosted/mock

Quoted 2 lines

I'm not sure if it makes sense to try and repair this or just start anew. Any advice would be appreciated.

The only thing that I would consider would be to redo the conversion but this time specifying an author conversion file with the -A switch.

Jeff

#2 lore raw
In reply to Clark Williams
Quoted 11 lines · Clark Williams

One of my collaborators cloned the repository the other day and found that it didn't have any branches in it. I cloned a temp copy of it and found that the files that normally would be in refs/heads to identify the branches had somehow been moved to the directory refs/remotes/origin. In my local repository (which was cloned immediately after the CVS import), if I list what's in refs/heads, I get this:

$ ls -F refs/heads
master  mock  mock-0-6-branch  mock-0.7  origin
Quoted 7 lines

on the whacky cloned copy, I get this:

$ ls -F refs/heads
master

and if I look in refs/remotes/origin:

$ ls -F refs/remotes/origin
HEAD  master  mock  mock-0-6-branch  mock-0.7  origin

This is a change in Git versions. Pre Git-1.5.0 we used to put all of the branches from the remote system into refs/heads, but now in 1.5.0 and later we put them in refs/remotes/origin.

Nothing screwed up on the central repository, its just the new layout. refs/heads is reserved for *this* local repository, while refs/remotes/$name is reserved for the heads of $name remote repository.

Signature · 1 line
Shawn.
#3 lore raw
Quoted 8 lines · Shawn O. Pearce

This is a change in Git versions. Pre Git-1.5.0 we used to put all of the branches from the remote system into refs/heads, but now in 1.5.0 and later we put them in refs/remotes/origin.

Nothing screwed up on the central repository, its just the new layout. refs/heads is reserved for *this* local repository, while refs/remotes/$name is reserved for the heads of $name remote repository.

See also

	http://www.kernel.org/pub/software/scm/git/docs/RelNotes-1.5.0.txt

(grep for "repository layout") for more details on the change.

The new system is surprising if you don't expect it, but it's really much simpler to work with.

--b.

#4 lore raw
In reply to Shawn O. Pearce

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 20 lines · Shawn O. Pearce
Quoted 11 lines · Clark Williams

One of my collaborators cloned the repository the other day and found that it didn't have any branches in it. I cloned a temp copy of it and found that the files that normally would be in refs/heads to identify the branches had somehow been moved to the directory refs/remotes/origin. In my local repository (which was cloned immediately after the CVS import), if I list what's in refs/heads, I get this:

$ ls -F refs/heads
master  mock  mock-0-6-branch  mock-0.7  origin
Quoted 7 lines

on the whacky cloned copy, I get this:

$ ls -F refs/heads
master

and if I look in refs/remotes/origin:

$ ls -F refs/remotes/origin
HEAD  master  mock  mock-0-6-branch  mock-0.7  origin
Quoted 9 lines

This is a change in Git versions. Pre Git-1.5.0 we used to put all of the branches from the remote system into refs/heads, but now in 1.5.0 and later we put them in refs/remotes/origin.

Nothing screwed up on the central repository, its just the new layout. refs/heads is reserved for *this* local repository, while refs/remotes/$name is reserved for the heads of $name remote repository.

Ah, so I'm not totally inept, just unable to read release notes. Sigh.

But, I'm still confused. After you clone the central repository, with the new layout, why can't I 'mock checkout -f mock-0-6-branch'? Do I need to further qualify it, or create a local branch from it?

Probably a better question is: what man-page/web-page/mail-thread should I read to figure this out?

Clark

-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFGLkIAqA4JVb61b9cRAn8VAJ9Q7U4ZxP4Jc6OSyd1rcVufbBOO6wCfdDUn Pmo7URBzl8PcCSRXu5BqYc0=
=yl7q
-----END PGP SIGNATURE-----

#5 lore raw
Quoted 3 lines · Clark Williams

But, I'm still confused. After you clone the central repository, with the new layout, why can't I 'mock checkout -f mock-0-6-branch'? Do I need to further qualify it, or create a local branch from it?

I don't know what the mock command does... but if you meant:

git checkout -f mock-0-6-branch

then you want to add the origin/ prefix to qualify it, as you want the branch from the origin remote. That should cause your head to get detached however:

git checkout -f origin/mock-0-6-branch

at which point you aren't on any branch at all. So you might want to make your own mock-0-6-branch starting at your origin's current version:

git checkout -f -b mock-0-6-branch origin/mock-0-6-branch

Signature · 1 line
Shawn.
#6 lore raw

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

Quoted 9 lines · Shawn O. Pearce
Quoted 3 lines · Clark Williams

But, I'm still confused. After you clone the central repository, with the new layout, why can't I 'mock checkout -f mock-0-6-branch'? Do I need to further qualify it, or create a local branch from it?

I don't know what the mock command does... but if you meant:

git checkout -f mock-0-6-branch

Heh, yes that's what I meant. :)

Quoted 4 lines

then you want to add the origin/ prefix to qualify it, as you want the branch from the origin remote. That should cause your head to get detached however:

Quoted 8 lines

git checkout -f origin/mock-0-6-branch

at which point you aren't on any branch at all. So you might want to make your own mock-0-6-branch starting at your origin's current version:

git checkout -f -b mock-0-6-branch origin/mock-0-6-branch

Ah, I think that's what I was looking for.

Thanks,
Clark
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.7 (GNU/Linux)
Comment: Using GnuPG with Fedora - http://enigmail.mozdev.org

iD8DBQFGLkQDqA4JVb61b9cRAt8OAJ9sPWLuiA0n/WKO7EzYH40GhFN0ZgCfY6Mw J7m60FS67Rj4ESgnVNRfjl8=
=iuic
-----END PGP SIGNATURE-----