commit 083235c36907d07cdd17a743b90c58de978957c3 Author: Toshaan Bharvani Date: Wed Jun 15 02:30:17 2022 +0200 initial package creation Signed-off-by: Toshaan Bharvani diff --git a/SOURCES/git-1.7-el5-emacs-support.patch b/SOURCES/git-1.7-el5-emacs-support.patch new file mode 100644 index 0000000..25b3c31 --- /dev/null +++ b/SOURCES/git-1.7-el5-emacs-support.patch @@ -0,0 +1,252 @@ +From 424058e0607b4b3c558d19633090e06e7bd2b851 Mon Sep 17 00:00:00 2001 +From: Todd Zullinger +Date: Wed, 2 Feb 2011 21:24:44 -0500 +Subject: [PATCH] Restore vc-git.el for basic compatibility on EL-5 + +This is the vc-git.el from 1.6.4.1, the last version to include it. +Most uses will be better served by the vc-git.el which is provided by +emacs >= 22.2, but on EL-5 we don't have the luxury of a modern emacs. +--- + contrib/emacs/Makefile | 2 +- + contrib/emacs/vc-git.el | 216 +++++++++++++++++++++++++++++++++++++++++++++++ + 2 files changed, 217 insertions(+), 1 deletions(-) + create mode 100644 contrib/emacs/vc-git.el + +diff --git a/contrib/emacs/Makefile b/contrib/emacs/Makefile +index 24d9312..a48540a 100644 +--- a/contrib/emacs/Makefile ++++ b/contrib/emacs/Makefile +@@ -2,7 +2,7 @@ + + EMACS = emacs + +-ELC = git.elc git-blame.elc ++ELC = git.elc vc-git.elc git-blame.elc + INSTALL ?= install + INSTALL_ELC = $(INSTALL) -m 644 + prefix ?= $(HOME) +diff --git a/contrib/emacs/vc-git.el b/contrib/emacs/vc-git.el +new file mode 100644 +index 0000000..b8f6be5 +--- /dev/null ++++ b/contrib/emacs/vc-git.el +@@ -0,0 +1,216 @@ ++;;; vc-git.el --- VC backend for the git version control system ++ ++;; Copyright (C) 2006 Alexandre Julliard ++ ++;; This program is free software; you can redistribute it and/or ++;; modify it under the terms of the GNU General Public License as ++;; published by the Free Software Foundation; either version 2 of ++;; the License, or (at your option) any later version. ++;; ++;; This program is distributed in the hope that it will be ++;; useful, but WITHOUT ANY WARRANTY; without even the implied ++;; warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR ++;; PURPOSE. See the GNU General Public License for more details. ++;; ++;; You should have received a copy of the GNU General Public ++;; License along with this program; if not, write to the Free ++;; Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, ++;; MA 02111-1307 USA ++ ++;;; Commentary: ++ ++;; This file contains a VC backend for the git version control ++;; system. ++;; ++;; To install: put this file on the load-path and add GIT to the list ++;; of supported backends in `vc-handled-backends'; the following line, ++;; placed in your ~/.emacs, will accomplish this: ++;; ++;; (add-to-list 'vc-handled-backends 'GIT) ++;; ++;; TODO ++;; - changelog generation ++;; - working with revisions other than HEAD ++;; ++ ++(eval-when-compile (require 'cl)) ++ ++(defvar git-commits-coding-system 'utf-8 ++ "Default coding system for git commits.") ++ ++(defun vc-git--run-command-string (file &rest args) ++ "Run a git command on FILE and return its output as string." ++ (let* ((ok t) ++ (str (with-output-to-string ++ (with-current-buffer standard-output ++ (unless (eq 0 (apply #'call-process "git" nil '(t nil) nil ++ (append args (list (file-relative-name file))))) ++ (setq ok nil)))))) ++ (and ok str))) ++ ++(defun vc-git--run-command (file &rest args) ++ "Run a git command on FILE, discarding any output." ++ (let ((name (file-relative-name file))) ++ (eq 0 (apply #'call-process "git" nil (get-buffer "*Messages") nil (append args (list name)))))) ++ ++(defun vc-git-registered (file) ++ "Check whether FILE is registered with git." ++ (with-temp-buffer ++ (let* ((dir (file-name-directory file)) ++ (name (file-relative-name file dir))) ++ (and (ignore-errors ++ (when dir (cd dir)) ++ (eq 0 (call-process "git" nil '(t nil) nil "ls-files" "-c" "-z" "--" name))) ++ (let ((str (buffer-string))) ++ (and (> (length str) (length name)) ++ (string= (substring str 0 (1+ (length name))) (concat name "\0")))))))) ++ ++(defun vc-git-state (file) ++ "git-specific version of `vc-state'." ++ (let ((diff (vc-git--run-command-string file "diff-index" "-z" "HEAD" "--"))) ++ (if (and diff (string-match ":[0-7]\\{6\\} [0-7]\\{6\\} [0-9a-f]\\{40\\} [0-9a-f]\\{40\\} [ADMU]\0[^\0]+\0" diff)) ++ 'edited ++ 'up-to-date))) ++ ++(defun vc-git-workfile-version (file) ++ "git-specific version of `vc-workfile-version'." ++ (let ((str (with-output-to-string ++ (with-current-buffer standard-output ++ (call-process "git" nil '(t nil) nil "symbolic-ref" "HEAD"))))) ++ (if (string-match "^\\(refs/heads/\\)?\\(.+\\)$" str) ++ (match-string 2 str) ++ str))) ++ ++(defun vc-git-symbolic-commit (commit) ++ "Translate COMMIT string into symbolic form. ++Returns nil if not possible." ++ (and commit ++ (with-temp-buffer ++ (and ++ (zerop ++ (call-process "git" nil '(t nil) nil "name-rev" ++ "--name-only" "--tags" ++ commit)) ++ (goto-char (point-min)) ++ (= (forward-line 2) 1) ++ (bolp) ++ (buffer-substring-no-properties (point-min) (1- (point-max))))))) ++ ++(defun vc-git-previous-version (file rev) ++ "git-specific version of `vc-previous-version'." ++ (let ((default-directory (file-name-directory (expand-file-name file))) ++ (file (file-name-nondirectory file))) ++ (vc-git-symbolic-commit ++ (with-temp-buffer ++ (and ++ (zerop ++ (call-process "git" nil '(t nil) nil "rev-list" ++ "-2" rev "--" file)) ++ (goto-char (point-max)) ++ (bolp) ++ (zerop (forward-line -1)) ++ (not (bobp)) ++ (buffer-substring-no-properties ++ (point) ++ (1- (point-max)))))))) ++ ++(defun vc-git-next-version (file rev) ++ "git-specific version of `vc-next-version'." ++ (let* ((default-directory (file-name-directory ++ (expand-file-name file))) ++ (file (file-name-nondirectory file)) ++ (current-rev ++ (with-temp-buffer ++ (and ++ (zerop ++ (call-process "git" nil '(t nil) nil "rev-list" ++ "-1" rev "--" file)) ++ (goto-char (point-max)) ++ (bolp) ++ (zerop (forward-line -1)) ++ (bobp) ++ (buffer-substring-no-properties ++ (point) ++ (1- (point-max))))))) ++ (and current-rev ++ (vc-git-symbolic-commit ++ (with-temp-buffer ++ (and ++ (zerop ++ (call-process "git" nil '(t nil) nil "rev-list" ++ "HEAD" "--" file)) ++ (goto-char (point-min)) ++ (search-forward current-rev nil t) ++ (zerop (forward-line -1)) ++ (buffer-substring-no-properties ++ (point) ++ (progn (forward-line 1) (1- (point)))))))))) ++ ++(defun vc-git-revert (file &optional contents-done) ++ "Revert FILE to the version stored in the git repository." ++ (if contents-done ++ (vc-git--run-command file "update-index" "--") ++ (vc-git--run-command file "checkout" "HEAD"))) ++ ++(defun vc-git-checkout-model (file) ++ 'implicit) ++ ++(defun vc-git-workfile-unchanged-p (file) ++ (let ((sha1 (vc-git--run-command-string file "hash-object" "--")) ++ (head (vc-git--run-command-string file "ls-tree" "-z" "HEAD" "--"))) ++ (and head ++ (string-match "[0-7]\\{6\\} blob \\([0-9a-f]\\{40\\}\\)\t[^\0]+\0" head) ++ (string= (car (split-string sha1 "\n")) (match-string 1 head))))) ++ ++(defun vc-git-register (file &optional rev comment) ++ "Register FILE into the git version-control system." ++ (vc-git--run-command file "update-index" "--add" "--")) ++ ++(defun vc-git-print-log (file &optional buffer) ++ (let ((name (file-relative-name file)) ++ (coding-system-for-read git-commits-coding-system)) ++ (vc-do-command buffer 'async "git" name "rev-list" "--pretty" "HEAD" "--"))) ++ ++(defun vc-git-diff (file &optional rev1 rev2 buffer) ++ (let ((name (file-relative-name file)) ++ (buf (or buffer "*vc-diff*"))) ++ (if (and rev1 rev2) ++ (vc-do-command buf 0 "git" name "diff-tree" "-p" rev1 rev2 "--") ++ (vc-do-command buf 0 "git" name "diff-index" "-p" (or rev1 "HEAD") "--")) ++ ; git-diff-index doesn't set exit status like diff does ++ (if (vc-git-workfile-unchanged-p file) 0 1))) ++ ++(defun vc-git-checkin (file rev comment) ++ (let ((coding-system-for-write git-commits-coding-system)) ++ (vc-git--run-command file "commit" "-m" comment "--only" "--"))) ++ ++(defun vc-git-checkout (file &optional editable rev destfile) ++ (if destfile ++ (let ((fullname (substring ++ (vc-git--run-command-string file "ls-files" "-z" "--full-name" "--") ++ 0 -1)) ++ (coding-system-for-read 'no-conversion) ++ (coding-system-for-write 'no-conversion)) ++ (with-temp-file destfile ++ (eq 0 (call-process "git" nil t nil "cat-file" "blob" ++ (concat (or rev "HEAD") ":" fullname))))) ++ (vc-git--run-command file "checkout" (or rev "HEAD")))) ++ ++(defun vc-git-annotate-command (file buf &optional rev) ++ ; FIXME: rev is ignored ++ (let ((name (file-relative-name file))) ++ (call-process "git" nil buf nil "blame" name))) ++ ++(defun vc-git-annotate-time () ++ (and (re-search-forward "[0-9a-f]+ (.* \\([0-9]+\\)-\\([0-9]+\\)-\\([0-9]+\\) \\([0-9]+\\):\\([0-9]+\\):\\([0-9]+\\) \\([-+0-9]+\\) +[0-9]+)" nil t) ++ (vc-annotate-convert-time ++ (apply #'encode-time (mapcar (lambda (match) (string-to-number (match-string match))) '(6 5 4 3 2 1 7)))))) ++ ++;; Not really useful since we can't do anything with the revision yet ++;;(defun vc-annotate-extract-revision-at-line () ++;; (save-excursion ++;; (move-beginning-of-line 1) ++;; (and (looking-at "[0-9a-f]+") ++;; (buffer-substring (match-beginning 0) (match-end 0))))) ++ ++(provide 'vc-git) +-- +1.7.3.4 + diff --git a/SOURCES/git-1.8-gitweb-home-link.patch b/SOURCES/git-1.8-gitweb-home-link.patch new file mode 100644 index 0000000..aeb29e0 --- /dev/null +++ b/SOURCES/git-1.8-gitweb-home-link.patch @@ -0,0 +1,12 @@ +diff -up git-1.8.4.2/gitweb/gitweb.perl.orig git-1.8.4.2/gitweb/gitweb.perl +--- git-1.8.4.2/gitweb/gitweb.perl.orig 2013-10-28 14:17:38.000000000 -0400 ++++ git-1.8.4.2/gitweb/gitweb.perl 2013-10-29 16:49:07.302747507 -0400 +@@ -83,7 +83,7 @@ our $projectroot = "++GITWEB_PROJECTROOT + our $project_maxdepth = "++GITWEB_PROJECT_MAXDEPTH++"; + + # string of the home link on top of all pages +-our $home_link_str = "++GITWEB_HOME_LINK_STR++"; ++our $home_link_str = $ENV{'SERVER_NAME'} ? "git://" . $ENV{'SERVER_NAME'} : "projects"; + + # extra breadcrumbs preceding the home link + our @extra_breadcrumbs = (); diff --git a/SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch b/SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch new file mode 100644 index 0000000..37a22dd --- /dev/null +++ b/SOURCES/git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch @@ -0,0 +1,26 @@ +From 09891c65a5f7409ce0bd37daced0ff31fbb1b1c9 Mon Sep 17 00:00:00 2001 +From: Todd Zullinger +Date: Mon, 23 Mar 2009 00:03:36 -0400 +Subject: [PATCH] git-cvsimport: Ignore cvsps-2.2b1 Branches: output + +Signed-off-by: Todd Zullinger +--- + git-cvsimport.perl | 2 +- + 1 files changed, 1 insertions(+), 1 deletions(-) + +diff --git a/git-cvsimport.perl b/git-cvsimport.perl +index e439202..d020f1a 100755 +--- a/git-cvsimport.perl ++++ b/git-cvsimport.perl +@@ -952,7 +952,7 @@ while () { + } elsif (/^-+$/) { # end of unknown-line processing + $state = 1; + } elsif ($state != 11) { # ignore stuff when skipping +- print STDERR "* UNKNOWN LINE * $_\n"; ++ print STDERR "* UNKNOWN LINE * $_\n" unless /^Branches: /; + } + } + commit() if $branch and $state != 11; +-- +1.6.2.2 + diff --git a/SOURCES/git-gui.desktop b/SOURCES/git-gui.desktop new file mode 100644 index 0000000..f74f066 --- /dev/null +++ b/SOURCES/git-gui.desktop @@ -0,0 +1,9 @@ +[Desktop Entry] +Name=Git GUI +GenericName=Git GUI +Comment=A graphical interface to Git +Exec=git gui +Icon=/usr/share/git-gui/lib/git-gui.ico +Terminal=false +Type=Application +Categories=Development; diff --git a/SOURCES/git-init.el b/SOURCES/git-init.el new file mode 100644 index 0000000..d2a96a7 --- /dev/null +++ b/SOURCES/git-init.el @@ -0,0 +1,5 @@ +;; Git VC backend +(add-to-list 'vc-handled-backends 'GIT t) +(autoload 'git-status "git" "GIT mode." t) +(autoload 'git-blame-mode "git-blame" + "Minor mode for incremental blame for Git." t) diff --git a/SOURCES/git.conf.httpd b/SOURCES/git.conf.httpd new file mode 100644 index 0000000..4f4eac7 --- /dev/null +++ b/SOURCES/git.conf.httpd @@ -0,0 +1,7 @@ +Alias /git /var/www/git + + + Options +ExecCGI + AddHandler cgi-script .cgi + DirectoryIndex gitweb.cgi + diff --git a/SOURCES/git.socket b/SOURCES/git.socket new file mode 100644 index 0000000..3dec01d --- /dev/null +++ b/SOURCES/git.socket @@ -0,0 +1,9 @@ +[Unit] +Description=Git Activation Socket + +[Socket] +ListenStream=9418 +Accept=true + +[Install] +WantedBy=sockets.target diff --git a/SOURCES/git.xinetd.in b/SOURCES/git.xinetd.in new file mode 100644 index 0000000..540e070 --- /dev/null +++ b/SOURCES/git.xinetd.in @@ -0,0 +1,14 @@ +# default: off +# description: The git dæmon allows git repositories to be exported using \ +# the git:// protocol. + +service git +{ + disable = yes + socket_type = stream + wait = no + user = nobody + server = @GITCOREDIR@/git-daemon + server_args = --base-path=@BASE_PATH@ --export-all --user-path=public_git --syslog --inetd --verbose + log_on_failure += USERID +} diff --git a/SOURCES/git@.service b/SOURCES/git@.service new file mode 100644 index 0000000..185ff25 --- /dev/null +++ b/SOURCES/git@.service @@ -0,0 +1,8 @@ +[Unit] +Description=Git Repositories Server Daemon +Documentation=man:git-daemon(1) + +[Service] +User=nobody +ExecStart=-/usr/libexec/git-core/git-daemon --base-path=/var/lib/git --export-all --user-path=public_git --syslog --inetd --verbose +StandardInput=socket diff --git a/SOURCES/gitignore b/SOURCES/gitignore new file mode 100644 index 0000000..f318bf1 --- /dev/null +++ b/SOURCES/gitignore @@ -0,0 +1,243 @@ +00_header +10_* +20_linux_xen +30_os-prober +40_custom +41_custom +*.1 +*.8 +aclocal.m4 +ahci_test +ascii.bitmaps +ascii.h +autom4te.cache +build-grub-gen-asciih +build-grub-gen-widthspec +build-grub-mkfont +cdboot_test +cmp_test +config.cache +config.guess +config.h +config-util.h +config-util.h.in +config.log +config.status +config.sub +configure +core_compress_test +DISTLIST +docs/*.info +docs/stamp-vti +docs/version.texi +ehci_test +example_grub_script_test +example_scripted_test +example_unit_test +*.exec +*.exec.exe +fddboot_test +genkernsyms.sh +gensymlist.sh +gentrigtables +gentrigtables.exe +gettext_strings_test +grub-bin2h +/grub-bios-setup +/grub-bios-setup.exe +grub_cmd_date +grub_cmd_echo +grub_cmd_regexp +grub_cmd_set_date +grub_cmd_sleep +/grub-editenv +/grub-editenv.exe +grub-emu +grub-emu-lite +grub-emu.exe +grub-emu-lite.exe +grub_emu_init.c +grub_emu_init.h +grub-fstest +grub-fstest.exe +grub_fstest_init.c +grub_fstest_init.h +grub_func_test +grub-install +grub-install.exe +grub-kbdcomp +grub-macho2img +/grub-menulst2cfg +/grub-menulst2cfg.exe +/grub-mk* +grub-mount +/grub-ofpathname +/grub-ofpathname.exe +grub-core/build-grub-pe2elf.exe +/grub-probe +/grub-probe.exe +grub_probe_init.c +grub_probe_init.h +/grub-reboot +grub_script_blanklines +grub_script_blockarg +grub_script_break +grub-script-check +grub-script-check.exe +grub_script_check_init.c +grub_script_check_init.h +grub_script_comments +grub_script_continue +grub_script_dollar +grub_script_echo1 +grub_script_echo_keywords +grub_script_escape_comma +grub_script_eval +grub_script_expansion +grub_script_final_semicolon +grub_script_for1 +grub_script_functions +grub_script_gettext +grub_script_if +grub_script_leading_whitespace +grub_script_no_commands +grub_script_not +grub_script_return +grub_script_setparams +grub_script_shift +grub_script_strcmp +grub_script_test +grub_script_vars1 +grub_script_while1 +grub_script.tab.c +grub_script.tab.h +grub_script.yy.c +grub_script.yy.h +grub-set-default +grub_setup_init.c +grub_setup_init.h +grub-shell +grub-shell-tester +grub-sparc64-setup +grub-sparc64-setup.exe +gzcompress_test +hddboot_test +help_test +*.img +*.image +*.image.exe +include/grub/cpu +include/grub/machine +install-sh +lib/libgcrypt-grub +libgrub_a_init.c +*.log +*.lst +lzocompress_test +*.marker +Makefile +*.mod +mod-*.c +missing +netboot_test +*.o +*.a +ohci_test +partmap_test +pata_test +*.pf2 +*.pp +po/*.mo +po/grub.pot +po/POTFILES +po/stamp-po +printf_test +priority_queue_unit_test +pseries_test +stamp-h +stamp-h1 +stamp-h.in +symlist.c +symlist.h +trigtables.c +*.trs +uhci_test +update-grub_lib +unidata.c +xzcompress_test +Makefile.in +GPATH +GRTAGS +GSYMS +GTAGS +compile +depcomp +mdate-sh +texinfo.tex +grub-core/lib/libgcrypt-grub +.deps +.deps-util +.deps-core +.dirstamp +Makefile.util.am +contrib +grub-core/bootinfo.txt +grub-core/Makefile.core.am +grub-core/Makefile.gcry.def +grub-core/contrib +grub-core/gdb_grub +grub-core/genmod.sh +grub-core/gensyminfo.sh +grub-core/gmodule.pl +grub-core/grub.chrp +grub-core/modinfo.sh +grub-core/*.module +grub-core/*.module.exe +grub-core/*.pp +util/bash-completion.d/grub +grub-core/gnulib/alloca.h +grub-core/gnulib/arg-nonnull.h +grub-core/gnulib/c++defs.h +grub-core/gnulib/charset.alias +grub-core/gnulib/configmake.h +grub-core/gnulib/float.h +grub-core/gnulib/getopt.h +grub-core/gnulib/langinfo.h +grub-core/gnulib/ref-add.sed +grub-core/gnulib/ref-del.sed +grub-core/gnulib/stdio.h +grub-core/gnulib/stdlib.h +grub-core/gnulib/string.h +grub-core/gnulib/strings.h +grub-core/gnulib/sys +grub-core/gnulib/unistd.h +grub-core/gnulib/warn-on-use.h +grub-core/gnulib/wchar.h +grub-core/gnulib/wctype.h +grub-core/rs_decoder.h +widthspec.bin +widthspec.h +docs/stamp-1 +docs/version-dev.texi +Makefile.utilgcry.def +po/*.po +po/*.gmo +po/LINGUAS +po/remove-potcdate.sed +include/grub/gcrypt/gcrypt.h +include/grub/gcrypt/g10lib.h +po/POTFILES.in +po/POTFILES-shell.in +/grub-glue-efi +/grub-render-label +/grub-glue-efi.exe +/grub-render-label.exe +grub-core/gnulib/locale.h +grub-core/gnulib/unitypes.h +grub-core/gnulib/uniwidth.h +build-aux/test-driver +/garbage-gen +/garbage-gen.exe +/grub-fs-tester +!util/grub.d/[[:digit:]][[:digit:]]*.in +!util/*.[[:digit:]] diff --git a/SOURCES/gitweb.conf.in b/SOURCES/gitweb.conf.in new file mode 100644 index 0000000..c04a96b --- /dev/null +++ b/SOURCES/gitweb.conf.in @@ -0,0 +1,53 @@ +# The gitweb config file is a fragment of perl code. You can set variables +# using "our $variable = value"; text from "#" character until the end of a +# line is ignored. See perlsyn(1) man page for details. +# +# See /usr/share/doc/gitweb-*/README and /usr/share/doc/gitweb-*/INSTALL for +# more details and available configuration variables. + +# Set the path to git projects. This is an absolute filesystem path which will +# be prepended to the project path. +#our $projectroot = "@PROJECTROOT@"; + +# Set the list of git base URLs used for URL to where fetch project from, i.e. +# the full URL is "$git_base_url/$project". By default this is empty +#our @git_base_url_list = qw(git://git.example.com +# ssh://git.example.com@PROJECTROOT@); + +# Enable the 'blame' blob view, showing the last commit that modified +# each line in the file. This can be very CPU-intensive. Disabled by default +#$feature{'blame'}{'default'} = [1]; +# +# Allow projects to override the default setting via git config file. +# Example: gitweb.blame = 0|1; +#$feature{'blame'}{'override'} = 1; + +# Disable the 'snapshot' link, providing a compressed archive of any tree. This +# can potentially generate high traffic if you have large project. Enabled for +# .tar.gz snapshots by default. +# +# Value is a list of formats defined in %known_snapshot_formats that you wish +# to offer. +#$feature{'snapshot'}{'default'} = []; +# +# Allow projects to override the default setting via git config file. +# Example: gitweb.snapshot = tbz2,zip; (use "none" to disable) +#$feature{'snapshot'}{'override'} = 1; + +# Disable grep search, which will list the files in currently selected tree +# containing the given string. This can be potentially CPU-intensive, of +# course. Enabled by default. +#$feature{'grep'}{'default'} = [0]; +# +# Allow projects to override the default setting via git config file. +# Example: gitweb.grep = 0|1; +#$feature{'grep'}{'override'} = 1; + +# Disable the pickaxe search, which will list the commits that modified a given +# string in a file. This can be practical and quite faster alternative to +# 'blame', but still potentially CPU-intensive. Enabled by default. +#$feature{'pickaxe'}{'default'} = [0]; +# +# Allow projects to override the default setting via git config file. +# Example: gitweb.pickaxe = 0|1; +#$feature{'pickaxe'}{'override'} = 1; diff --git a/SPECS/git.spec b/SPECS/git.spec new file mode 100644 index 0000000..7e67628 --- /dev/null +++ b/SPECS/git.spec @@ -0,0 +1,775 @@ +# Pass --without docs to rpmbuild if you don't want the documentation + +# Settings for EL-5 +# - Leave git-* binaries in %{_bindir} +# - Don't use noarch subpackages +# - Use proper libcurl devel package +# - Patch emacs and tweak docbook spaces +# - Explicitly enable ipv6 for git-daemon +# - Use prebuilt documentation, asciidoc is too old +# - Define missing python macro +%if 0%{?rhel} && 0%{?rhel} <= 5 +%global gitcoredir %{_bindir} +%global noarch_sub 0 +%global libcurl_devel curl-devel +%global emacs_old 1 +%global docbook_suppress_sp 1 +%global enable_ipv6 1 +%global use_prebuilt_docs 1 +%global filter_yaml_any 1 +%{!?python_sitelib: %global python_sitelib %(%{__python} -c "from distutils.sysconfig import get_python_lib; print(get_python_lib())")} +%else +%global gitcoredir %{_libexecdir}/git-core +%global noarch_sub 1 +%global libcurl_devel libcurl-devel +%global emacs_old 0 +%global docbook_suppress_sp 0 +%global enable_ipv6 1 +%global use_prebuilt_docs 0 +%global filter_yaml_any 0 +%endif + +# Settings for F-19+ and EL-7+ +%if 0%{?fedora} >= 19 || 0%{?rhel} >= 7 +%global bashcomp_pkgconfig 1 +%global bashcompdir %(pkg-config --variable=completionsdir bash-completion 2>/dev/null) +%global bashcomproot %(dirname %{bashcompdir} 2>/dev/null) +%global desktop_vendor_tag 1 +%global gnome_keyring 0 +%global use_new_rpm_filters 1 +%global use_systemd 1 +%else +%global bashcomp_pkgconfig 0 +%global bashcompdir %{_sysconfdir}/bash_completion.d +%global bashcomproot %{bashcompdir} +%global desktop_vendor_tag 1 +%global gnome_keyring 0 +%global use_new_rpm_filters 0 +%global use_systemd 0 +%endif + +# Settings for EL <= 7 +%if 0%{?rhel} && 0%{?rhel} <= 7 +%{!?__global_ldflags: %global __global_ldflags -Wl,-z,relro} +%endif + +Name: git +Version: 2.34.1 +Release: 1%{?dist} +Summary: Fast Version Control System +License: GPLv2 +Group: Development/Tools +URL: https://git-scm.com/ +Source0: https://www.kernel.org/pub/software/scm/git/%{name}-%{version}.tar.xz +Source1: https://www.kernel.org/pub/software/scm/git/%{name}-htmldocs-%{version}.tar.xz +Source2: https://www.kernel.org/pub/software/scm/git/%{name}-manpages-%{version}.tar.xz +Source3: https://www.kernel.org/pub/software/scm/git/%{name}-%{version}.tar.sign +Source4: https://www.kernel.org/pub/software/scm/git/%{name}-htmldocs-%{version}.tar.sign +Source5: https://www.kernel.org/pub/software/scm/git/%{name}-manpages-%{version}.tar.sign + +# Junio C Hamano's key is used to sign git releases, it can be found in the +# junio-gpg-pub tag within git. +# +# (Note that the tagged blob in git contains a version of the key with an +# expired signing subkey. The subkey expiration has been extended on the +# public keyservers, but the blob in git has not been updated.) +# +# https://git.kernel.org/cgit/git/git.git/tag/?h=junio-gpg-pub +# https://git.kernel.org/cgit/git/git.git/blob/?h=junio-gpg-pub&id=7214aea37915ee2c4f6369eb9dea520aec7d855b +Source9: gpgkey-junio.asc + +# Local sources begin at 10 to allow for additional future upstream sources +Source10: git-init.el +Source11: git.xinetd.in +Source12: git.conf.httpd +Source13: git-gui.desktop +Source14: gitweb.conf.in +Source15: git@.service +Source16: git.socket +Patch0: git-1.8-gitweb-home-link.patch +# https://bugzilla.redhat.com/490602 +Patch1: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch +# https://bugzilla.redhat.com/600411 +Patch3: git-1.7-el5-emacs-support.patch + +BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) + +%if ! %{use_prebuilt_docs} && ! 0%{?_without_docs} +BuildRequires: asciidoc >= 8.4.1 +BuildRequires: xmlto +%endif +BuildRequires: desktop-file-utils +BuildRequires: emacs +BuildRequires: expat-devel +BuildRequires: gettext +BuildRequires: gnupg2 +BuildRequires: %{libcurl_devel} +%if %{gnome_keyring} +BuildRequires: libgnome-keyring-devel +%endif +BuildRequires: pcre-devel +BuildRequires: pcre2-devel +#BuildRequires: perl-generators +BuildRequires: perl(Test) +BuildRequires: openssl-devel +BuildRequires: zlib-devel >= 1.2 +%if %{bashcomp_pkgconfig} +BuildRequires: pkgconfig(bash-completion) +%endif +%if %{use_systemd} +# For macros +BuildRequires: systemd +%endif + +Requires: git-core = %{version}-%{release} +Requires: git-core-doc = %{version}-%{release} +#Requires: perl(Error) +%if ! %{defined perl_bootstrap} +Requires: perl(Term::ReadKey) +%endif +Requires: perl-Git = %{version}-%{release} + +%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7 +Requires: emacs-filesystem >= %{_emacs_version} +# These can be removed in Fedora 26 +Obsoletes: emacs-git <= 2.4.5 +Obsoletes: emacs-git-el <= 2.4.5 +Provides: emacs-git <= 2.4.5 +Provides: emacs-git-el <= 2.4.5 +%endif + +#Provides: git-core = %{version}-%{release} +#%if 0%{?rhel} && 0%{?rhel} <= 5 +#Obsoletes: git-core <= 1.5.4.3 +#%endif + +# Obsolete git-arch +Obsoletes: git-arch < %{version}-%{release} + +%description +Git is a fast, scalable, distributed revision control system with an +unusually rich command set that provides both high-level operations +and full access to internals. + +The git rpm installs common set of tools which are usually using with +small amount of dependencies. To install all git packages, including +tools for integrating with other SCMs, install the git-all meta-package. + +%package all +Summary: Meta-package to pull in all git tools +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release} +Requires: git-cvs = %{version}-%{release} +Requires: git-email = %{version}-%{release} +Requires: git-gui = %{version}-%{release} +Requires: git-svn = %{version}-%{release} +Requires: git-p4 = %{version}-%{release} +Requires: gitk = %{version}-%{release} +Requires: perl-Git = %{version}-%{release} +%if ! %{defined perl_bootstrap} +Requires: perl(Term::ReadKey) +%endif +%if 0%{?rhel} && 0%{?rhel} <= 6 +Requires: emacs-git = %{version}-%{release} +%endif +Obsoletes: git <= 1.5.4.3 + +%description all +Git is a fast, scalable, distributed revision control system with an +unusually rich command set that provides both high-level operations +and full access to internals. + +This is a dummy package which brings in all subpackages. + +%package core +Summary: Core package of git with minimal funcionality +Group: Development/Tools +Requires: less +Requires: openssh-clients +Requires: rsync +Requires: zlib >= 1.2 +%description core +Git is a fast, scalable, distributed revision control system with an +unusually rich command set that provides both high-level operations +and full access to internals. + +The git-core rpm installs really the core tools with minimal +dependencies. Install git package for common set of tools. +To install all git packages, including tools for integrating with +other SCMs, install the git-all meta-package. + +%package core-doc +Summary: Documentation files for git-core +Group: Development/Tools +Requires: git-core = %{version}-%{release} + +%description core-doc +Documentation files for git-core package including man pages. + +%package daemon +Summary: Git protocol dæmon +Group: Development/Tools +Requires: git = %{version}-%{release} +%if %{use_systemd} +Requires: systemd +Requires(post): systemd +Requires(preun): systemd +Requires(postun): systemd +%else +Requires: xinetd +%endif +%description daemon +The git dæmon for supporting git:// access to git repositories + +%package -n gitweb +Summary: Simple web interface to git repositories +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release} + +%description -n gitweb +Simple web interface to track changes in git repositories + +%package p4 +Summary: Git tools for working with Perforce depots +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +BuildRequires: python +Requires: git = %{version}-%{release} +%description p4 +%{summary}. + +%package svn +Summary: Git tools for importing Subversion repositories +Group: Development/Tools +Requires: git = %{version}-%{release}, subversion +Requires: perl(Digest::MD5) +%if ! %{defined perl_bootstrap} +Requires: perl(Term::ReadKey) +%endif +%description svn +Git tools for importing Subversion repositories. + +%package cvs +Summary: Git tools for importing CVS repositories +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release}, cvs +Requires: cvsps +Requires: perl(DBD::SQLite) +%description cvs +Git tools for importing CVS repositories. + +%package email +Summary: Git tools for sending email +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release}, perl-Git = %{version}-%{release} +Requires: perl(Authen::SASL) +Requires: perl(Net::SMTP::SSL) +%description email +Git tools for sending email. + +%package gui +Summary: Git GUI tool +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release}, tk >= 8.4 +Requires: gitk = %{version}-%{release} +%description gui +Git GUI tool. + +%package -n gitk +Summary: Git revision tree visualiser +Group: Development/Tools +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release}, tk >= 8.4 +%description -n gitk +Git revision tree visualiser. + +%package -n perl-Git +Summary: Perl interface to Git +Group: Development/Libraries +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release} +#BuildRequires: perl(Error) +BuildRequires: perl(ExtUtils::MakeMaker) +#Requires: perl(Error) +#Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) + +%description -n perl-Git +Perl interface to Git. + +%package -n perl-Git-SVN +Summary: Perl interface to Git::SVN +Group: Development/Libraries +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: git = %{version}-%{release} +#Requires: perl(:MODULE_COMPAT_%(eval "`%{__perl} -V:version`"; echo $version)) + +%description -n perl-Git-SVN +Perl interface to Git. + +%if 0%{?rhel} && 0%{?rhel} <= 6 +%package -n emacs-git +Summary: Git version control system support for Emacs +Group: Applications/Editors +Requires: git = %{version}-%{release} +%if %{noarch_sub} +BuildArch: noarch +Requires: emacs(bin) >= %{_emacs_version} +%else +Requires: emacs-common +%endif + +%description -n emacs-git +%{summary}. + +%package -n emacs-git-el +Summary: Elisp source files for git version control system support for Emacs +Group: Applications/Editors +%if %{noarch_sub} +BuildArch: noarch +%endif +Requires: emacs-git = %{version}-%{release} + +%description -n emacs-git-el +%{summary}. +%endif + +%prep +# Verify GPG signatures +gpghome="$(mktemp -qd)" # Ensure we don't use any existing gpg keyrings +key="%{SOURCE9}" +# Ignore noisy output from GnuPG 2.0, used on EL <= 7 +# https://bugs.gnupg.org/gnupg/issue1555 +gpg2 --dearmor --quiet --batch --yes $key >/dev/null +for src in %{SOURCE0} %{SOURCE1} %{SOURCE2}; do + # Upstream signs the uncompressed tarballs + tar=${src/%.xz/} + xz -dc $src > $tar + gpgv2 --homedir "$gpghome" --quiet --keyring $key.gpg $tar.sign $tar + rm -f $tar +done +rm -rf "$gpghome" # Cleanup tmp gpg home dir + +%setup -q +%patch0 -p1 +%patch1 -p1 +%if %{emacs_old} +%patch3 -p1 +%endif + +%if %{use_prebuilt_docs} +mkdir -p prebuilt_docs/{html,man} +xz -dc %{SOURCE1} | tar xf - -C prebuilt_docs/html +xz -dc %{SOURCE2} | tar xf - -C prebuilt_docs/man +# Remove non-html files +find prebuilt_docs/html -type f ! -name '*.html' | xargs rm +find prebuilt_docs/html -type d | xargs rmdir --ignore-fail-on-non-empty +%endif + +# Use these same options for every invocation of 'make'. +# Otherwise it will rebuild in %%install due to flags changes. +cat << \EOF > config.mak +V = 1 +CFLAGS = %{optflags} +LDFLAGS = %{__global_ldflags} +BLK_SHA1 = 1 +NEEDS_CRYPTO_WITH_SSL = 1 +USE_LIBPCRE = 1 +ETC_GITCONFIG = %{_sysconfdir}/gitconfig +DESTDIR = %{buildroot} +INSTALL = install -p +GITWEB_PROJECTROOT = %{_var}/lib/git +GNU_ROFF = 1 +htmldir = %{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}} +prefix = %{_prefix} +gitwebdir = %{_var}/www/git +EOF + +%if "%{gitcoredir}" == "%{_bindir}" +echo gitexecdir = %{_bindir} >> config.mak +%endif + +%if %{docbook_suppress_sp} +# This is needed for 1.69.1-1.71.0 +echo DOCBOOK_SUPPRESS_SP = 1 >> config.mak +%endif + +# Filter bogus perl requires +# packed-refs comes from a comment in contrib/hooks/update-paranoid +# YAML::Any is optional and not available on el5 +%if %{use_new_rpm_filters} +%{?perl_default_filter} +%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\\(packed-refs\\) +%if ! %{defined perl_bootstrap} +%global __requires_exclude %{?__requires_exclude:%__requires_exclude|}perl\\(Term::ReadKey\\) +%endif +%else +cat << \EOF > %{name}-req +#!/bin/sh +%{__perl_requires} $* |\ +sed \ +%if %{filter_yaml_any} + -e '/perl(YAML::Any)/d' \ +%endif + -e '/perl(packed-refs)/d' +EOF + +%global __perl_requires %{_builddir}/%{name}-%{version}/%{name}-req +chmod +x %{__perl_requires} +%endif + +%build +make %{?_smp_mflags} all +%if ! %{use_prebuilt_docs} && ! 0%{?_without_docs} +make %{?_smp_mflags} doc +%endif + +#make -C contrib/emacs + +%if %{gnome_keyring} +make -C contrib/credential/gnome-keyring/ +%endif +make -C contrib/credential/netrc/ + +make -C contrib/subtree/ + +# Remove shebang from bash-completion script +sed -i '/^#!bash/,+1 d' contrib/completion/git-completion.bash + +%install +rm -rf %{buildroot} +make %{?_smp_mflags} INSTALLDIRS=vendor install +%if ! %{use_prebuilt_docs} && ! 0%{?_without_docs} +make %{?_smp_mflags} INSTALLDIRS=vendor install-doc +%else +cp -a prebuilt_docs/man/* %{buildroot}%{_mandir} +cp -a prebuilt_docs/html/* Documentation/ +%endif + +#%if %{emacs_old} +#%global _emacs_sitelispdir %{_datadir}/emacs/site-lisp +#%global _emacs_sitestartdir %{_emacs_sitelispdir}/site-start.d +#%endif +#%global elispdir %{_emacs_sitelispdir}/git +#make -C contrib/emacs install \ +# emacsdir=%{buildroot}%{elispdir} +#for elc in %{buildroot}%{elispdir}/*.elc ; do +# install -pm 644 contrib/emacs/$(basename $elc .elc).el \ +# %{buildroot}%{elispdir} +#done +#install -Dpm 644 %{SOURCE10} \ +# %{buildroot}%{_emacs_sitestartdir}/git-init.el + +%if %{gnome_keyring} +install -pm 755 contrib/credential/gnome-keyring/git-credential-gnome-keyring \ + %{buildroot}%{gitcoredir} +# Remove built binary files, otherwise they will be installed in doc +make -C contrib/credential/gnome-keyring/ clean +%endif +install -pm 755 contrib/credential/netrc/git-credential-netrc \ + %{buildroot}%{gitcoredir} + +make -C contrib/subtree install +%if ! %{use_prebuilt_docs} +make -C contrib/subtree install-doc +%endif +# it's ugly hack, but this file don't need to be copied to this directory +# it's already part of git-core-doc and it's alone here +rm -f %{buildroot}%{?_pkgdocdir}%{!?_pkgdocdir:%{_docdir}/%{name}-%{version}}/git-subtree.html + +mkdir -p %{buildroot}%{_sysconfdir}/httpd/conf.d +install -pm 0644 %{SOURCE12} %{buildroot}%{_sysconfdir}/httpd/conf.d/git.conf +sed "s|@PROJECTROOT@|%{_var}/lib/git|g" \ + %{SOURCE14} > %{buildroot}%{_sysconfdir}/gitweb.conf + +find %{buildroot} -type f -name .packlist -exec rm -f {} ';' +find %{buildroot} -type f -name '*.bs' -empty -exec rm -f {} ';' +find %{buildroot} -type f -name perllocal.pod -exec rm -f {} ';' + +# git-archimport is not supported +find %{buildroot} Documentation -type f -name 'git-archimport*' -exec rm -f {} ';' + +exclude_re="archimport|email|git-citool|git-cvs|git-daemon|git-gui|git-remote-bzr|git-remote-hg|gitk|p4|svn" +(find %{buildroot}{%{_bindir},%{_libexecdir}} -type f | grep -vE "$exclude_re" | sed -e s@^%{buildroot}@@) > bin-man-doc-files +(find %{buildroot}{%{_bindir},%{_libexecdir}} -mindepth 1 -type d | grep -vE "$exclude_re" | sed -e 's@^%{buildroot}@%dir @') >> bin-man-doc-files +#(find %{buildroot}%{perl_vendorlib} -type f | sed -e s@^%{buildroot}@@) > perl-git-files +#(find %{buildroot}%{perl_vendorlib} -mindepth 1 -type d | sed -e 's@^%{buildroot}@%dir @') >> perl-git-files +# Split out Git::SVN files +#grep Git/SVN perl-git-files > perl-git-svn-files +#sed -i "/Git\/SVN/ d" perl-git-files +%if %{!?_without_docs:1}0 +(find %{buildroot}%{_mandir} -type f | grep -vE "$exclude_re|Git" | sed -e s@^%{buildroot}@@ -e 's/$/*/' ) >> bin-man-doc-files +%else +rm -rf %{buildroot}%{_mandir} +%endif + +mkdir -p %{buildroot}%{_var}/lib/git +%if %{use_systemd} +mkdir -p %{buildroot}%{_unitdir} +cp -a %{SOURCE15} %{SOURCE16} %{buildroot}%{_unitdir} +%else +mkdir -p %{buildroot}%{_sysconfdir}/xinetd.d +# On EL <= 5, xinetd does not enable IPv6 by default +enable_ipv6=" # xinetd does not enable IPv6 by default + flags = IPv6" +perl -p \ + -e "s|\@GITCOREDIR\@|%{gitcoredir}|g;" \ + -e "s|\@BASE_PATH\@|%{_var}/lib/git|g;" \ +%if %{enable_ipv6} + -e "s|^}|$enable_ipv6\n$&|;" \ +%endif + %{SOURCE11} > %{buildroot}%{_sysconfdir}/xinetd.d/git +%endif + +# Setup bash completion +install -Dpm 644 contrib/completion/git-completion.bash %{buildroot}%{bashcompdir}/git +ln -s git %{buildroot}%{bashcompdir}/gitk + +# Install tcsh completion +mkdir -p %{buildroot}%{_datadir}/git-core/contrib/completion +install -pm 644 contrib/completion/git-completion.tcsh \ + %{buildroot}%{_datadir}/git-core/contrib/completion/ + +# Move contrib/hooks out of %%docdir and make them executable +mkdir -p %{buildroot}%{_datadir}/git-core/contrib +mv contrib/hooks %{buildroot}%{_datadir}/git-core/contrib +chmod +x %{buildroot}%{_datadir}/git-core/contrib/hooks/* +pushd contrib > /dev/null +ln -s ../../../git-core/contrib/hooks +popd > /dev/null + +# Install git-prompt.sh +mkdir -p %{buildroot}%{_datadir}/git-core/contrib/completion +install -pm 644 contrib/completion/git-prompt.sh \ + %{buildroot}%{_datadir}/git-core/contrib/completion/ + +# install git-gui .desktop file +desktop-file-install \ +%if %{desktop_vendor_tag} + --vendor powerel \ +%endif + --dir=%{buildroot}%{_datadir}/applications %{SOURCE13} + +# find translations +%find_lang %{name} %{name}.lang +cat %{name}.lang >> bin-man-doc-files + +# quiet some rpmlint complaints +chmod -R g-w %{buildroot} +find %{buildroot} -name git-mergetool--lib | xargs chmod a-x +# rm -f {Documentation/technical,contrib/emacs,contrib/credential/gnome-keyring}/.gitignore +# These files probably are not needed +find . -name .gitignore -delete +chmod a-x Documentation/technical/api-index.sh +find contrib -type f | xargs chmod -x + +# Split core files +not_core_re="git-(add--interactive|am|credential-netrc|difftool|instaweb|relink|request-pull|send-mail|submodule)|gitweb|prepare-commit-msg|pre-rebase" +grep -vE "$not_core_re|\/man\/" bin-man-doc-files > bin-files-core +grep -vE "$not_core_re" bin-man-doc-files | grep "\/man\/" > man-doc-files-core +grep -E "$not_core_re" bin-man-doc-files > bin-man-doc-git-files + + +%clean +rm -rf %{buildroot} + + +%if %{use_systemd} +%post daemon +%systemd_post git@.service +%preun daemon +%systemd_preun git@.service +%postun daemon +%systemd_postun_with_restart git@.service +%endif + + +%files -f bin-man-doc-git-files +%defattr(-,root,root) +%if 0%{?fedora} >= 16 || 0%{?rhel} >= 7 +#%{elispdir} +#%{_emacs_sitestartdir}/git-init.el +%endif +%{_datadir}/git-core/contrib/hooks/update-paranoid +%{_datadir}/git-core/contrib/hooks/setgitperms.perl +#%{_datadir}/git-core/* +#%doc Documentation/*.txt +#%{!?_without_docs: %doc Documentation/*.html} +#%{!?_without_docs: %doc Documentation/howto/* Documentation/technical/*} + + +%files core -f bin-files-core +%defattr(-,root,root) +%{!?_licensedir:%global license %doc} +%license COPYING +# exlude is best way here because of troubels with symlinks inside git-core/ +%exclude %{_datadir}/git-core/contrib/hooks/update-paranoid +%exclude %{_datadir}/git-core/contrib/hooks/setgitperms.perl +%{bashcomproot} +%{_datadir}/git-core/ + + +%files core-doc -f man-doc-files-core +%defattr(-,root,root) +%doc README.md Documentation/*.txt Documentation/RelNotes contrib/ +%{!?_without_docs: %doc Documentation/*.html Documentation/docbook-xsl.css} +%{!?_without_docs: %doc Documentation/howto Documentation/technical} +%if ! %{use_prebuilt_docs} +%{!?_without_docs: %doc contrib/subtree/git-subtree.html} +%endif + + +%files p4 +%defattr(-,root,root) +%{gitcoredir}/*p4* +%{gitcoredir}/mergetools/p4merge +%doc Documentation/*p4*.txt +%{!?_without_docs: %{_mandir}/man1/*p4*.1*} +%{!?_without_docs: %doc Documentation/*p4*.html } + + +%files svn +%defattr(-,root,root) +%{gitcoredir}/*svn* +%doc Documentation/*svn*.txt +%{!?_without_docs: %{_mandir}/man1/*svn*.1*} +%{!?_without_docs: %doc Documentation/*svn*.html } + + +%files cvs +%defattr(-,root,root) +%doc Documentation/*git-cvs*.txt +%if "%{gitcoredir}" != "%{_bindir}" +%{_bindir}/git-cvsserver +%endif +%{gitcoredir}/*cvs* +%{!?_without_docs: %{_mandir}/man1/*cvs*.1*} +%{!?_without_docs: %doc Documentation/*git-cvs*.html } + + +%files email +%defattr(-,root,root) +%doc Documentation/*email*.txt +%{gitcoredir}/*email* +%{!?_without_docs: %{_mandir}/man1/*email*.1*} +%{!?_without_docs: %doc Documentation/*email*.html } + + +%files gui +%defattr(-,root,root) +%{gitcoredir}/git-gui* +%{gitcoredir}/git-citool +%{_datadir}/applications/*git-gui.desktop +%{_datadir}/git-gui/ +%{!?_without_docs: %{_mandir}/man1/git-gui.1*} +%{!?_without_docs: %doc Documentation/git-gui.html} +%{!?_without_docs: %{_mandir}/man1/git-citool.1*} +%{!?_without_docs: %doc Documentation/git-citool.html} + + +%files -n gitk +%defattr(-,root,root) +%doc Documentation/*gitk*.txt +%{_bindir}/*gitk* +%{_datadir}/gitk +%{!?_without_docs: %{_mandir}/man1/*gitk*.1*} +%{!?_without_docs: %doc Documentation/*gitk*.html } + + +#%files -n perl-Git -f perl-git-files +%files -n perl-Git +%defattr(-,root,root) +%exclude %{_mandir}/man3/*Git*SVN*.3pm* +%{!?_without_docs: %{_mandir}/man3/*Git*.3pm*} + + +#%files -n perl-Git-SVN -f perl-git-svn-files +%files -n perl-Git-SVN +%defattr(-,root,root) +#%{!?_without_docs: %{_mandir}/man3/*Git*SVN*.3pm*} +/usr/share/perl5/FromCPAN/Error.pm +/usr/share/perl5/FromCPAN/Mail/Address.pm +/usr/share/perl5/Git.pm +/usr/share/perl5/Git/I18N.pm +/usr/share/perl5/Git/IndexInfo.pm +/usr/share/perl5/Git/LoadCPAN.pm +/usr/share/perl5/Git/LoadCPAN/Error.pm +/usr/share/perl5/Git/LoadCPAN/Mail/Address.pm +/usr/share/perl5/Git/Packet.pm +/usr/share/perl5/Git/SVN.pm +/usr/share/perl5/Git/SVN/Editor.pm +/usr/share/perl5/Git/SVN/Fetcher.pm +/usr/share/perl5/Git/SVN/GlobSpec.pm +/usr/share/perl5/Git/SVN/Log.pm +/usr/share/perl5/Git/SVN/Memoize/YAML.pm +/usr/share/perl5/Git/SVN/Migration.pm +/usr/share/perl5/Git/SVN/Prompt.pm +/usr/share/perl5/Git/SVN/Ra.pm +/usr/share/perl5/Git/SVN/Utils.pm + + +%if 0%{?rhel} && 0%{?rhel} <= 6 +%files -n emacs-git +%defattr(-,root,root) +%doc contrib/emacs/README +#%dir %{elispdir} +%{elispdir}/*.elc +#%{_emacs_sitestartdir}/git-init.el + + +%files -n emacs-git-el +%defattr(-,root,root) +%{elispdir}/*.el +%endif + + +%files daemon +%defattr(-,root,root) +%doc Documentation/*daemon*.txt +%if %{use_systemd} +%{_unitdir}/git.socket +%{_unitdir}/git@.service +%else +%config(noreplace)%{_sysconfdir}/xinetd.d/git +%endif +%{gitcoredir}/git-daemon +%{_var}/lib/git +%{!?_without_docs: %{_mandir}/man1/*daemon*.1*} +%{!?_without_docs: %doc Documentation/*daemon*.html} + + +%files -n gitweb +%defattr(-,root,root) +%doc gitweb/INSTALL gitweb/README +%config(noreplace)%{_sysconfdir}/gitweb.conf +%config(noreplace)%{_sysconfdir}/httpd/conf.d/git.conf +%{_var}/www/git/ + + +%files all +# No files for you! + + +%changelog