Re: [PATCH] cvsimport: use git-update-ref when updating
- From
Johannes Schindelin <johannes.schindelin@gmx.de>
- Date
- Mar 31, 2006, 11:14 UTC
- Message-ID
- <Pine.LNX.4.63.0603311310580.23287@wbgn013.biozentrum.uni-wuerzburg.de>
- In-Reply-To
- <20060331103230.GB15159@hand.yhbt.net>
Hi,
On Fri, 31 Mar 2006, Eric Wong wrote:
Show 18 quoted lines
> Johannes Schindelin <Johannes.Schindelin@gmx.de> wrote: > > Hi, > > > > On Thu, 30 Mar 2006, Junio C Hamano wrote: > > > > > Johannes Schindelin <Johannes.Schindelin@gmx.de> writes: > > > > > > > This simplifies code, and also fixes a subtle bug: when importing in a > > > > shared repository, where another user last imported from CVS, cvsimport > > > > used to complain that it could not open <branch> for update. > > > > > > The second hunk look sensible but I do not know about "use Fcntl" > > > since I do not see anything you are adding that starts to use it... > > > > O_EXCL. Without "use Fcntl;" perl says I am not allowed to use bareword > > things in strict mode or some such. > > Huh? I still don't see where O_EXCL is used.
Yes. I did not make that point clear enough, I guess. My first approach was to reimplement git-update-ref in perl, which worked well enough, until I remembered that you could just call programs from perl :-)
Show 6 quoted lines
> > > > + system("git-update-ref refs/heads/$branch $cid") == 0
>
> Passing args to system() in list form is always preferable in case
> there's a shell-unfriendly variable:
>
> system("git-update-ref", "refs/heads/$branch", $cid) == 0Old habit dies hard.
---
git-cvsimport.perl | 6 +----- 1 files changed, 1 insertions(+), 5 deletions(-)
diff --git a/git-cvsimport.perl b/git-cvsimport.perl index 3728294..fe6298b 100755 --- a/git-cvsimport.perl +++ b/git-cvsimport.perl @@ -677,11 +677,7 @@ my $commit = sub { waitpid($pid,0); die "Error running git-commit-tree: $?\n" if $?; - open(C,">$git_dir/refs/heads/$branch") - or die "Cannot open branch $branch for update: $!\n"; - print C "$cid\n" - or die "Cannot write branch $branch for update: $!\n"; - close(C) + system("git-update-ref", "refs/heads/$branch", $cid) == 0 or die "Cannot write branch $branch for update: $!\n"; if($tag) {