threads / discuss / 27814

git with detached worktrees , push has no effect

Subject: git with detached worktrees , push has no effect

## tl;dr

5 messages between Jul 14, 2011 and Jul 15, 2011.

replies: 4people: 2as markdown or json

J. Bakshi· Jul 14, 2011, 12:40 UTC · lore
Hello list,
I have set the git bare repo with detached worktree to update website with post-receive hook. In short what I have done

[1] create the bare git with hook -------------------------------------

git init --bare /home/git/web.git

cat > home/git/web.git/hooks/post-receive #!/bin/sh GIT_WORK_TREE=/opt/web git checkout -f

chmod +x /home/git/web.git/hooks/post-receive
chown -rvf wwwrun:www /home/git/web.git

[2] create the directory and set permission --------------------------------------------

mkdir /opt/web chown -Rvf wwwrun:www /opt/web

[3] cloning at my clinet and push -----------------------------------

 git clone http://192.168.1.1/git/web.git

Cloning into web... Username: Password: warning: You appear to have cloned an empty repository.

 touch A
 git add A
 git commit -m "add A"
[master (root-commit) 7662edd] add A
 0 files changed, 0 insertions(+), 0 deletions(-)
 create mode 100644 A
 git push
 Username:
 Password:
 Everything up-to-date
Why reports  [Everything up-to-date] rather than modify the remote git ?
Confused :-( 
Carlos Martín Nieto· Jul 14, 2011, 12:49 UTC · re: J. Bakshi · lore

Re: git with detached worktrees , push has no effect

On Thu, 2011-07-14 at 18:10 +0530, J. Bakshi wrote: [...] snip snip snip

Show 18 quoted lines
> warning: You appear to have cloned an empty repository.
> 
>  touch A
>  git add A
> 
>  git commit -m "add A"
> 
> [master (root-commit) 7662edd] add A
>  0 files changed, 0 insertions(+), 0 deletions(-)
>  create mode 100644 A
> 
>  git push
>  Username:
>  Password:
>  Everything up-to-date
> 
> 
> Why reports  [Everything up-to-date] rather than modify the remote git ?

That's because your remote repository has no branches and per default git-push will only push matching branches; as no branches match, there is nothing to do. This is what "warning: You appear to have cloned an empty repository." is trying to tell you (the message could certainly be made much more friendly). Your master branch in this case doesn't exist in the server, so you have to tell git to push it explicitly.

    git push origin master
will do the trick.
Cheers,
   cmn
J. Bakshi· Jul 15, 2011, 05:25 UTC · re: Carlos Martín Nieto · lore

Re: git with detached worktrees , push has no effect

On Thu, 14 Jul 2011 14:49:27 +0200 Carlos Martín Nieto <cmn@elego.de> wrote:

Show 32 quoted lines
> On Thu, 2011-07-14 at 18:10 +0530, J. Bakshi wrote:
> [...] snip snip snip
> > warning: You appear to have cloned an empty repository.
> > 
> >  touch A
> >  git add A
> > 
> >  git commit -m "add A"
> > 
> > [master (root-commit) 7662edd] add A
> >  0 files changed, 0 insertions(+), 0 deletions(-)
> >  create mode 100644 A
> > 
> >  git push
> >  Username:
> >  Password:
> >  Everything up-to-date
> > 
> > 
> > Why reports  [Everything up-to-date] rather than modify the remote git ?
> 
> That's because your remote repository has no branches and per default
> git-push will only push matching branches; as no branches match, there
> is nothing to do. This is what "warning: You appear to have cloned an
> empty repository." is trying to tell you (the message could certainly be
> made much more friendly). Your master branch in this case doesn't exist
> in the server, so you have to tell git to push it explicitly.
> 
>     git push origin master
> 
> will do the trick.
> 
GRAET !!

Working like a charm and the hook is also working fine. Can we make the empty master branch at the server, so that client can continue with plain "git push" ?

Thanks
J. Bakshi· Jul 15, 2011, 05:26 UTC · re: Carlos Martín Nieto · lore

Re: git with detached worktrees , push has no effect

On Thu, 14 Jul 2011 14:49:27 +0200 Carlos Martín Nieto <cmn@elego.de> wrote:

Show 32 quoted lines
> On Thu, 2011-07-14 at 18:10 +0530, J. Bakshi wrote:
> [...] snip snip snip
> > warning: You appear to have cloned an empty repository.
> > 
> >  touch A
> >  git add A
> > 
> >  git commit -m "add A"
> > 
> > [master (root-commit) 7662edd] add A
> >  0 files changed, 0 insertions(+), 0 deletions(-)
> >  create mode 100644 A
> > 
> >  git push
> >  Username:
> >  Password:
> >  Everything up-to-date
> > 
> > 
> > Why reports  [Everything up-to-date] rather than modify the remote git ?
> 
> That's because your remote repository has no branches and per default
> git-push will only push matching branches; as no branches match, there
> is nothing to do. This is what "warning: You appear to have cloned an
> empty repository." is trying to tell you (the message could certainly be
> made much more friendly). Your master branch in this case doesn't exist
> in the server, so you have to tell git to push it explicitly.
> 
>     git push origin master
> 
> will do the trick.
> 
Great !!

Working like a charm and the hook is also working fine. Can we make the empty master branch at the server, so that client can continue with plain "git push" ?

Thanks
Carlos Martín Nieto· Jul 15, 2011, 19:24 UTC · re: J. Bakshi · lore

Re: git with detached worktrees , push has no effect

On Fri, 2011-07-15 at 10:56 +0530, J. Bakshi wrote: [snip]

> Working like a charm and the hook is also working fine. Can we make the 
> empty master branch at the server, so that client can continue with
> plain "git push" ?

You may have figured this out already, but once you push, that branch exists, so under those same rules, pushing to master will work from there onwards.

If you were asking whether you can create an empty branch on the remote you it works "automatically", then the answer is no, because a branch doesn't exist[0] before its first commit. A branch is a reference to a commit (which is, logically, considered the tip of that branch). Thus an empty branch cannot exist before any commits are made to that branch.

[0] For the purposes of network transfer. The way to create the first commit ever in a repo (or in an orphan branch) is to have HEAD point to an as-of-yet nonexistent branch; but this won't help you in this case.

Cheers,
   cmn

← back to recent threads