# [PATCH] cvsserver: imitate git-update-ref when committing

3 messages from 2006-07-26 to 2006-07-27. Participants: Johannes Schindelin, Shawn Pearce.
Thread: https://gitlist.dev/t/5000

## Johannes Schindelin, 2006-07-26 20:51

Subject: [PATCH] cvsserver: imitate git-update-ref when committing
Message-ID: <Pine.LNX.4.63.0607262249010.29667@wbgn013.biozentrum.uni-wuerzburg.de>
URL: https://gitlist.dev/e/Pine.LNX.4.63.0607262249010.29667%40wbgn013.biozentrum.uni-wuerzburg.de

```

git-update-ref writes into the lockfile, and renames it afterwards. Like 
commit v1.3.0-rc3~22, it is not only cleaner, but also helps with shared 
setups: every developer can have a different primary group; what matters 
is that $GIT_DIR/refs/heads has to be writable by a group you are in.

Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
---
 git-cvsserver.perl |    8 ++++----
 1 files changed, 4 insertions(+), 4 deletions(-)

diff --git a/git-cvsserver.perl b/git-cvsserver.perl
index 1b70cd9..2c1b0c7 100755
--- a/git-cvsserver.perl
+++ b/git-cvsserver.perl
@@ -1144,9 +1144,7 @@ sub req_ci
         exit;
     }
 
-    open FILE, ">", "$ENV{GIT_DIR}refs/heads/$state->{module}";
-    print FILE $commithash;
-    close FILE;
+    print LOCKFILE $commithash;
 
     $updater->update();
 
@@ -1173,7 +1171,9 @@ sub req_ci
     }
 
     close LOCKFILE;
-    unlink($lockfile);
+    my $reffile = "$ENV{GIT_DIR}refs/heads/$state->{module}";
+    unlink($reffile);
+    rename($lockfile, $reffile);
     chdir "/";
 
     print "ok\n";
-- 
1.4.2.rc2.g2b3d-dirty

```

## Shawn Pearce, 2006-07-27 00:21

Subject: Re: [PATCH] cvsserver: imitate git-update-ref when committing
Message-ID: <20060727002130.GA32492@spearce.org>
URL: https://gitlist.dev/e/20060727002130.GA32492%40spearce.org
In-Reply-To: <Pine.LNX.4.63.0607262249010.29667@wbgn013.biozentrum.uni-wuerzburg.de>

```
You might want to also consider appending to the reflog, if it
exists/is enabled.  I still need to get upload-pack to do this but it
may be useful for some heads for some people...  or maybe not.  :-)

Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote:
> 
> git-update-ref writes into the lockfile, and renames it afterwards. Like 
> commit v1.3.0-rc3~22, it is not only cleaner, but also helps with shared 
> setups: every developer can have a different primary group; what matters 
> is that $GIT_DIR/refs/heads has to be writable by a group you are in.
> 
> Signed-off-by: Johannes Schindelin <Johannes.Schindelin@gmx.de>
> ---
>  git-cvsserver.perl |    8 ++++----
>  1 files changed, 4 insertions(+), 4 deletions(-)
> 
> diff --git a/git-cvsserver.perl b/git-cvsserver.perl
> index 1b70cd9..2c1b0c7 100755
> --- a/git-cvsserver.perl
> +++ b/git-cvsserver.perl
> @@ -1144,9 +1144,7 @@ sub req_ci
>          exit;
>      }
>  
> -    open FILE, ">", "$ENV{GIT_DIR}refs/heads/$state->{module}";
> -    print FILE $commithash;
> -    close FILE;
> +    print LOCKFILE $commithash;
>  
>      $updater->update();
>  
> @@ -1173,7 +1171,9 @@ sub req_ci
>      }
>  
>      close LOCKFILE;
> -    unlink($lockfile);
> +    my $reffile = "$ENV{GIT_DIR}refs/heads/$state->{module}";
> +    unlink($reffile);
> +    rename($lockfile, $reffile);
>      chdir "/";
>  
>      print "ok\n";
> -- 
> 1.4.2.rc2.g2b3d-dirty

-- 
Shawn.

```

## Johannes Schindelin, 2006-07-27 08:53

Subject: Re: [PATCH] cvsserver: imitate git-update-ref when committing
Message-ID: <Pine.LNX.4.63.0607271052070.29667@wbgn013.biozentrum.uni-wuerzburg.de>
URL: https://gitlist.dev/e/Pine.LNX.4.63.0607271052070.29667%40wbgn013.biozentrum.uni-wuerzburg.de
In-Reply-To: <20060727002130.GA32492@spearce.org>

```
Hi,

On Wed, 26 Jul 2006, Shawn Pearce wrote:

> You might want to also consider appending to the reflog, if it exists/is 
> enabled.

Given that I do not use it, and do not really understand what it does, 
this would be a bad idea ;-)

Ciao,
Dscho

P.S.: How's your Java thing coming along?

```
