From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: X-Spam-Checker-Version: SpamAssassin 3.2.5 (2008-06-10) on sa.int.altlinux.org X-Spam-Level: X-Spam-Status: No, score=-2.1 required=5.0 tests=AWL,BAYES_00,SPF_PASS autolearn=ham version=3.2.5 DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imath.kiev.ua; s=hydra; t=1403201882; bh=omqK2nPLuFKb6qWw51GeRwCZ86g6s6T1qhO3Zh0al/M=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=fys8dA5CrtFypFy0eaIkP5Jp5ODG2vWiVJcseHinEqQSHNEEVzLMZXikICVXUjNN1 1/nT1oai4KM5EQS41noPvbSf0+NEmsIb/u4O7nee0wMnBCtwS449jtLRDR/i2LtwHB ByWH6Z/VOdMxeBkufBEhvBExi/dCh65PXUE/c5uk= X-Virus-Scanned: amavisd-new at imath.kiev.ua DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=imath.kiev.ua; s=hydra; t=1403201878; bh=omqK2nPLuFKb6qWw51GeRwCZ86g6s6T1qhO3Zh0al/M=; h=Date:From:To:Cc:Subject:References:In-Reply-To; b=HlYzXo2/JptMoz7qt2dHb7WgO1xYQwIInn/J5qdg7GmbeEH0O0aCvP8xuhcxG5NT4 Y+hY6SZ10Jfg5gJWED27UUI/fmUsZL9yX/5rUS+BE+8W+CB1h27oKILob3/84Dey8L uJfEOHhiHhaVm1RNCIFQd1hufq2vJFhbb0tHeLsc= Date: Thu, 19 Jun 2014 21:20:35 +0300 From: Igor Vlasenko To: ALT Linux Team development discussions Message-ID: <20140619182035.GA18999@dad.imath.kiev.ua> References: <20140619075237.GA9295@dad.imath.kiev.ua> <20140619110814.GA10173@dad.imath.kiev.ua> <53A2C53F.7080504@altlinux.com> <20140619115541.GA10395@dad.imath.kiev.ua> <53A2D326.7080801@altlinux.com> <20140619121723.GA10499@dad.imath.kiev.ua> <53A2DC6B.1050307@altlinux.com> <20140619142413.GA10880@dad.imath.kiev.ua> <53A3178E.5000001@altlinux.com> MIME-Version: 1.0 Content-Type: multipart/mixed; boundary="5mCyUwZo2JvN/JJP" Content-Disposition: inline Content-Transfer-Encoding: 8bit In-Reply-To: <53A3178E.5000001@altlinux.com> User-Agent: Mutt/1.5.21 (2010-09-15) Cc: Anton Farygin Subject: Re: [devel] =?utf-8?b?R2VhciDQuCDQstC90LXRiNC90LjQtSAgICAgICBWQ1Mu?= X-BeenThere: devel@lists.altlinux.org X-Mailman-Version: 2.1.12 Precedence: list Reply-To: ALT Linux Team development discussions List-Id: ALT Linux Team development discussions List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Thu, 19 Jun 2014 18:18:17 -0000 Archived-At: List-Archive: List-Post: --5mCyUwZo2JvN/JJP Content-Type: text/plain; charset=utf-8 Content-Disposition: inline Content-Transfer-Encoding: 8bit On Thu, Jun 19, 2014 at 09:02:06PM +0400, Anton Farygin wrote: > Игорь, я же говорю - remotes надо описывать в watch файле. На watch файлы в свое время было много нареканий, что сложный в освоении и запутанный формат. Основная причина, почему я взялся - это много тысяч готовых watch файлов, которые можно скопировать не читая из дистрибутивов, основанных на debian. git+gear -- alt специфический, там нет такой необходимости быть с чем-то совместимым. плюс специфика кода, я много усилий вложил в минимизацию diff с debian в участках кода, работающего с watch файлами, чтобы можно было бесконфликтно мержится с debian. Не хочется опять все ломать. Просто посмотрите на .gear/upstream/remotes, что это такой хитрый watch файл для git tags, а git-config -- это такой у него формат. Прилагаю к письму proof-of-concept скрипт, "watch для gear tags", test-tag-watch. пока поддерживает только стандартные теги v@version@ и @version@, для работы нужно скопировать секцию remote из .git/config в .gear/upstream/remotes. Проверьте у себя, пожалуйста. При запуске в корне gear репозитория должен выдать что-то вроде "Repository is up to date." > >он выполнил свой долг, создав файл .gear/upstream/remotes. > Зачем эта информация сообществу ? Меня тоже надо услышать. Мне лично и прямо сейчас такая информация уже нужна для пакетов perl-*. Я ведь не исключен из сообщества? А по закону больших чисел такая информация понадобится не раз и не два еще не одному десятку майнтайнеров. Да, у нас массовые обновления и исправления пакетов не очень распространены. Но не потому, что не нужны, а потому что требуется слишком много усилий из-за несовершенства инструментов. -- I V --5mCyUwZo2JvN/JJP Content-Type: text/plain; charset=us-ascii Content-Disposition: attachment; filename=test-tag-watch #!/usr/bin/perl use strict; use warnings; use RPM::uscan; my $pattern='v?([\d\.]*\d)'; my $pkg_dir='.'; my $debug=0; print 'remotes=', join("\n",get_remotes($pkg_dir)),"\n" if $debug; my @tags=get_tags(); @tags = map {$_->[0]} Devscripts::Versort::upstream_versort(map {[$_,$_]}@tags); print 'tags=', join(" ",@tags),"\n" if $debug; my (undef, $upackage, $uversion) = RPM::uscan::altlinux_guess_package_and_version($pkg_dir); my $version_cmp=Devscripts::Versort::myvercmp($uversion, $tags[0]); if ($version_cmp>1) { print "Oops! local repository ($uversion) is ahead of remote repository ($tags[0]).\n"; } elsif ($version_cmp==0) { print "repository is up to date.\n"; } else { print "New version $tags[0] is available.\n"; } sub get_tags { my @tags; foreach my $remote (&get_remotes($pkg_dir)) { foreach my $tag (&exec2array('git ls-remote --tags '.$remote)) { $tag=~s!^\S+\s+refs/tags/!!; $tag=~s!\^\{\}$!!; #print "testing: $tag\n"; push @tags, $1 if $tag=~/^$pattern$/; } } return @tags; } sub exec2array { my ($cmd)=@_; my @out; my $fn; open ($fn, "$cmd |") or die "$!: can't exec $cmd\n"; local $_; while (<$fn>) { chomp; push @out, $_; } close ($fn); #print 'out=', join(";",@out),"\n"; return @out; } sub get_remotes { my ($pkg_dir)=@_; my @remotes; die "can't find $pkg_dir/.gear/upstream/remotes\n" unless -r $pkg_dir.'/.gear/upstream/remotes'; my $fn; open ($fn, 'git config --file '.$pkg_dir.'/.gear/upstream/remotes --list|') or die "$!: can't open .gear/upstream/remotes\n"; local $_; while (<$fn>) { chomp; next unless /^remote\.([^\.]+)\.url=(\S+)/; my $remote=$1; #my $url=$2; push @remotes, $remote; } close ($fn); my %local_remotes=map{$_=>1} &exec2array('git remote'); foreach my $remote (@remotes) { die "Oops: remote $remote is present in .gear/upstream/remotes, but not in .git/config!\n" unless $local_remotes{$remote}; } return @remotes; } --5mCyUwZo2JvN/JJP--