Gentoo Websites Logo
Go to: Gentoo Home Documentation Forums Lists Bugs Planet Store Wiki Get Gentoo!
Bug 248464 - repoman commit on git repo makes two commits instead of one
Summary: repoman commit on git repo makes two commits instead of one
Status: RESOLVED FIXED
Alias: None
Product: Portage Development
Classification: Unclassified
Component: Repoman (show other bugs)
Hardware: All Linux
: High normal (vote)
Assignee: Portage team
URL:
Whiteboard:
Keywords: InVCS
Depends on:
Blocks: 210077 216231
  Show dependency tree
 
Reported: 2008-11-23 20:41 UTC by Alexey Shvetsov
Modified: 2008-11-27 04:13 UTC (History)
0 users

See Also:
Package list:
Runtime testing required: ---


Attachments
use single git commit for all files (applies to 2.2_rc16 or 2.1.6_rc1) (single_git_commit.patch,2.25 KB, patch)
2008-11-26 06:34 UTC, Zac Medico
Details | Diff

Note You need to log in before you can comment on or make changes to this bug.
Description Alexey Shvetsov archtester gentoo-dev 2008-11-23 20:41:41 UTC
repoman commit on git repo makes two commits:
1 with ebuild and suplementary files
2 wth manifest and metadata.xml
while it sould be one!

For example see 
1 http://git.overlays.gentoo.org/gitweb/?p=proj/kde-crazy.git;a=commit;h=03a3f2ed0f765399b7e4e749f7c6d9061b2d78dd
2 http://git.overlays.gentoo.org/gitweb/?p=proj/kde-crazy.git;a=commit;h=c6242f56c196965db282af9492b73fdec418f4ec
Portage 2.2_rc15 (default/linux/amd64/2008.0/desktop, gcc-4.3.2, glibc-2.8_p20080602-r0, 2.6.27-gentoo-r2 x86_64)
=================================================================                                                
System uname: Linux-2.6.27-gentoo-r2-x86_64-Intel-R-_Core-TM-2_Duo_CPU_E7200_@_2.53GHz-with-glibc2.2.5           
Timestamp of tree: Sun, 23 Nov 2008 08:03:01 +0000                                                               
ccache version 2.4 [enabled]                                                                                     
app-shells/bash:     3.2_p48                                                                                     
dev-java/java-config: 1.3.7, 2.1.6-r1                                                                            
dev-lang/python:     2.5.2-r8                                                                                    
dev-util/ccache:     2.4-r8                                                                                      
dev-util/cmake:      2.6.2                                                                                       
sys-apps/baselayout: 2.0.0                                                                                       
sys-apps/openrc:     0.3.0-r1                                                                                    
sys-apps/sandbox:    1.2.18.1-r3                                                                                 
sys-devel/autoconf:  2.13, 2.63                                                                                  
sys-devel/automake:  1.5, 1.7.9-r1, 1.8.5-r3, 1.9.6-r2, 1.10.1-r1                                                
sys-devel/binutils:  2.19                                                                                        
sys-devel/gcc-config: 1.4.0-r4                                                                                   
sys-devel/libtool:   2.2.6a                                                                                      
virtual/os-headers:  2.6.27-r2                                                                                   
ACCEPT_KEYWORDS="amd64 ~amd64"                                                                                   
CBUILD="x86_64-pc-linux-gnu"                                                                                     
CFLAGS="-O3 -pipe -march=native -mtune=native"                                                                   
CHOST="x86_64-pc-linux-gnu"                                                                                      
CONFIG_PROTECT="/etc /usr/env /usr/kde/3.5/env /usr/kde/3.5/share/config /usr/kde/3.5/shutdown /usr/share/config /usr/shutdown /var/lib/hsqldb"                                                                                                                             
CONFIG_PROTECT_MASK="/etc/ca-certificates.conf /etc/env.d /etc/env.d/java/ /etc/fonts/fonts.conf /etc/gconf /etc/gentoo-release /etc/revdep-rebuild /etc/splash /etc/terminfo /etc/texmf/language.dat.d /etc/texmf/language.def.d /etc/texmf/updmap.d /etc/texmf/web2c /etc/udev/rules.d"                                                                                                                         
CXXFLAGS="-O3 -pipe -march=native -mtune=native"                                                                                      
DISTDIR="/usr/portage/distfiles"                                                                                                      
FEATURES="ccache distlocks parallel-fetch prelink preserve-libs protect-owned sandbox sfperms strict unmerge-orphans userfetch"       
FFLAGS="-O3 -pipe -march=native -mtune=native"                                                                                        
GENTOO_MIRRORS="http://distfiles.gentoo.org http://distro.ibiblio.org/pub/linux/distributions/gentoo"                                 
LANG="ru_RU.UTF-8"                                                                                                                    
LC_ALL=""                                                                                                                             
LDFLAGS="-Wl,-O1 -Wl,--sort-common -Wl,--as-needed"
LINGUAS="ru en"
MAKEOPTS="-j5"
PKGDIR="/usr/portage/packages"
PORTAGE_RSYNC_OPTS="--recursive --links --safe-links --perms --times --compress --force --whole-file --delete --stats --timeout=180 --exclude=/distfiles --exclude=/local --exclude=/packages"
PORTAGE_TMPDIR="/var/tmp"
PORTDIR="/usr/portage"
PORTDIR_OVERLAY="/home/alexxy/kde-crazy"
SYNC="rsync://rsync.gentoo.org/gentoo-portage"
USE="X a52 aac acl acpi addressbook alsa amd64 amr amrnb amrr amrwb avahi bash-completion berkdb blas branding bzip2 cairo cdaudio cdinstall cdr cli consolekit context cracklib crypt cups cyrillic daap dbus detex dga dhcp djvu dri dts dv dvb dvd dvdr dvdread embeddedemboss enca encode evo exif extra fam fbcondecor ffmpeg fftw flac fontconfig fortran ftp gdbm gif git glitz gmp gnutls gpg gphoto2 gpm grace graphics graphviz gs gsl gstreamer gtk hal humanities iconv idn ieee1394 imagemagick ipv6 isdnlog ithreads jadetex java javascript jpeg jpeg2k kde kdehiddenvisibility kipi kpathsea ladspa lapack latex lcms libffi libnotify live lm_sensors lzo mad marble md5summdnsresponder-compat midi mikmod mktemp mmx mmxext mng mp2 mp3 mp4 mpeg mpi mpi-threads mplayer mudflap multilib music mysql ncurses nemesi nepomuk network-cron nls nptl nptlonly nsplugin ogg omega openal openexr opengl openmp pam pch pcre pdf perl plasma png pnm ppds pppd ps pstricks publishers python qt3support qt4 quicktime rar readline reflection resolvconf rtc sandbox schroedinger science sdl semantic-desktop sensord session slang smp speex spell spl srt sse sse2 ssl ssse3 startup-notification subversion svg symlink sysfs tcpd tetex tex tex4ht themes theora threads tiff truetype umfpack unicode urandom usb utempter vde vhook vim vim-syntax visualization vorbis wmf x264 x86emu xattr xcb xcomposite xetex xml xorg xpm xscreensaver xulrunner xv xvid xvmc zeroconf zlib" ALSA_CARDS="ali5451 als4000 atiixp atiixp-modem bt87x ca0106 cmipci emu10k1x ens1370 ens1371 es1938 es1968 fm801 hda-intel intel8x0 intel8x0m maestro3 trident usb-audio via82xx via82xx-modem ymfpci" ALSA_PCM_PLUGINS="adpcm alaw asym copy dmix dshare dsnoop empty extplug file hooks iec958 ioplug ladspa lfloat linear meter mmap_emul mulaw multi null plug rate route share shm softvol" APACHE2_MODULES="actions alias auth_basic authn_alias authn_anon authn_dbm authn_default authn_file authz_dbm authz_default authz_groupfile authz_host authz_owner authz_userautoindex cache dav dav_fs dav_lock deflate dir disk_cache env expires ext_filter file_cache filter headers include info log_config logio mem_cache mime mime_magic negotiation rewrite setenvif speling status unique_id userdir usertrack vhost_alias" ELIBC="glibc" INPUT_DEVICES="evdev" KERNEL="linux" LCD_DEVICES="bayrad cfontz cfontz633 glk hd44780 lb216 lcdm001 mtxorb ncurses text" LINGUAS="ru en" USERLAND="GNU" VIDEO_CARDS="nvidia"
Unset:  CPPFLAGS, CTARGET, EMERGE_DEFAULT_OPTS, INSTALL_MASK, PORTAGE_COMPRESS, PORTAGE_COMPRESS_FLAGS, PORTAGE_RSYNC_EXTRA_OPTS




Reproducible: Always
Comment 1 Fabian Groffen gentoo-dev 2008-11-23 20:45:11 UTC
probably because the code to figure out what gets expanded and what not is missing from the current git case.  You'd like the same case as svn somehow, but perhaps without any expansions.  See around line 1863 of repoman.
Comment 2 Zac Medico gentoo-dev 2008-11-26 04:44:37 UTC
Does git support (In reply to comment #0)
> repoman commit on git repo makes two commits:
> 1 with ebuild and suplementary files
> 2 wth manifest and metadata.xml
> while it sould be one!

The current behavior is an artifact of the fact that gentoo's tree uses cvs keyword expansion, which means that the Manifest has to be regenerated and committed after files containing keyword expansions have been committed.

Does git support keyword expansion in the same sense that cvs and subversion do? I found a small reference to it in the GitFaq:

http://git.or.cz/gitwiki/GitFaq#head-4a0afe71a2bb7734777a8b0b345e0308aefdbd40

It references the gitattributes man page:

http://www.kernel.org/pub/software/scm/git/docs/gitattributes.html

The gitattributes man page mentions an "export-subst" attribute in the "Creating an archive" section. If I understand correctly, repoman does not have to be concerned about this form of expansion, since it only applies to an archive like the git-archive command would create. So, perhaps repoman can assume that there is never any expansion with git, and the Manifest can always be committed together with all of the other files?
Comment 3 Zac Medico gentoo-dev 2008-11-26 06:34:11 UTC
Created attachment 173409 [details, diff]
use single git commit for all files (applies to 2.2_rc16 or 2.1.6_rc1)

If this patch is saved as /tmp/single_git_commit.patch, then it can be applied as follows:

 patch /usr/lib/portage/bin/repoman /tmp/single_git_commit.patch
Comment 4 Zac Medico gentoo-dev 2008-11-27 04:13:14 UTC
This is fixed in 2.1.6_rc2.