diff options
| author | root <root@alpha.trunkmasters.com> | 2026-06-04 16:47:34 -0500 |
|---|---|---|
| committer | root <root@alpha.trunkmasters.com> | 2026-06-04 16:47:34 -0500 |
| commit | dda948891d3731927b821ce31f9d9a2d03ba20c5 (patch) | |
| tree | 99cd40be4cbb0606260da212cd81b8ab2db9da9b /dev-vcs/git | |
| parent | a3ceca1b4c0d9bdb550dc23f06ffbb5a8e033bc7 (diff) | |
| download | baldeagleos-repo-dda948891d3731927b821ce31f9d9a2d03ba20c5.tar.gz baldeagleos-repo-dda948891d3731927b821ce31f9d9a2d03ba20c5.tar.xz baldeagleos-repo-dda948891d3731927b821ce31f9d9a2d03ba20c5.zip | |
Adding metadata
Diffstat (limited to 'dev-vcs/git')
24 files changed, 2273 insertions, 0 deletions
diff --git a/dev-vcs/git/Manifest b/dev-vcs/git/Manifest new file mode 100644 index 000000000000..3c49044741ca --- /dev/null +++ b/dev-vcs/git/Manifest @@ -0,0 +1,6 @@ +DIST git-2.53.0.tar.xz 7993096 BLAKE2B a23ccb2f793d37347e892f6094ad589510c93011a53fb2c14cdcbfbe6d87413edb4585a98253e4ca5124217f66ad783f4fa584f38dc25ffa34772da01dc45f02 SHA512 f9c0c0f527e10fe3eb524e368b1a24088bfd41097d8cac7854dae7ff21ab8ab2a1716384be53ea6174023ca5a2af3eeddca1d9feb57e447713f82e061df55c8d +DIST git-2.54.0.tar.xz 8126372 BLAKE2B 68ee0623ff5a695a35dae2f31e3f410ebd4b6a8296c7c9fd03f53668878e9164b78ca82869c8a0719b3fae981f514f2022c45b39df7174b5e883348bdd269a82 SHA512 cb363917124edc245c9f6745e6e0c4093990275b4d57f9d2213c655b304ac81b05ece8d88546122727495ebc48a5ae19ab166a3ee43b6b8c68da488ac0270064 +DIST git-htmldocs-2.53.0.tar.xz 1675212 BLAKE2B b3df781089a91c36b91f46ee7801162ef925cfaee470813b0c33e58690a7494b1946ec487538769a153ec275d9dd13e5386fb8552185f274ca07e1e2e1a88afd SHA512 0c752d1aa78747f2ce9f73c3fca06ac69b543c4b546bfd13e1b22552a41a417982feee60adc6e525c88c6887e98c3b843c680ea6fd3a250f7e8317338dee3036 +DIST git-htmldocs-2.54.0.tar.xz 1695136 BLAKE2B bfb8d7ee1f33b545534928a09901b863dd775e42651a032366cb8549e3e5980dc92d8a0d6f74aee27e715521c28dad9625954c661f5fa165ff8149546d2a4238 SHA512 f6ccd8bbe3664096b7d50ffbc0b4c7fa77776047b396f9247dfee7744115807dddfd447819b6e50a0a0c46ce830c59567bc642af13d1cb732ae417daeb919ce2 +DIST git-manpages-2.53.0.tar.xz 614136 BLAKE2B c2c309de1853ffceee4b3a334e2983fbfa5ce6a40ac60215aded917cff45b4e5eef7a38812cafec2515dd5538ceec8333a50525df09e15c012b4968435578487 SHA512 babb19223cd0da4e930449a4e246007283b5787b19b1c7ea341969bf6321f3de1164db9d1920de16535c4b18d03935c6e3fc329d9e2308aec4b4cb70514518a9 +DIST git-manpages-2.54.0.tar.xz 622912 BLAKE2B cca36435ec488cd2e1bbecd34885be5e0faaec4320c19fffb2a829b5f3b93241bf09a4464112544a7da73b8b434c0a7d838c69a49d0adc8859ba4ae1806a58c7 SHA512 c046d7c3d204587f16085621acde11d7df06ee194a38ff8aacf2ff2d9e446cc5c056a1557512aed150db30097da1e0b165507e9944f8b25249402a356b50d4bd diff --git a/dev-vcs/git/files/git-2.21.0-quiet-submodules-testcase.patch b/dev-vcs/git/files/git-2.21.0-quiet-submodules-testcase.patch new file mode 100644 index 000000000000..0874ea9352e9 --- /dev/null +++ b/dev-vcs/git/files/git-2.21.0-quiet-submodules-testcase.patch @@ -0,0 +1,38 @@ +From a57994f2d78134936521375ba9798a1b7418e230 Mon Sep 17 00:00:00 2001 +From: "Robin H. Johnson" <robbat2@gentoo.org> +Date: Fri, 12 Apr 2019 00:00:07 -0700 +Subject: [PATCH] submodule foreach: test foreach option swallowing + +Add a testcase for submodule foreach option parsing not knowing where to +stop taking options, and accidently removing options intended for +foreach target commands. + +CC: Duy Nguyen <pclouds@gmail.com> +CC: Prathamesh Chavan <pc44800@gmail.com> +Signed-off-by: Robin H. Johnson <robbat2@gentoo.org> +--- + t/t7407-submodule-foreach.sh | 10 ++++++++++ + 1 file changed, 10 insertions(+) + +diff --git a/t/t7407-submodule-foreach.sh b/t/t7407-submodule-foreach.sh +index 77729ac4aa..706ae762e0 100755 +--- a/t/t7407-submodule-foreach.sh ++++ b/t/t7407-submodule-foreach.sh +@@ -411,4 +411,14 @@ test_expect_success 'multi-argument command passed to foreach is not shell-evalu + test_cmp expected actual + ' + ++test_expect_success 'option-like arguments passed to foreach commands are not lost' ' ++ ( ++ cd super && ++ git submodule foreach "echo be --quiet" > ../expected && ++ git submodule foreach echo be --quiet > ../actual ++ ) && ++ grep -sq -e "--quiet" expected && ++ test_cmp expected actual ++' ++ + test_done +-- +2.21.0 + diff --git a/dev-vcs/git/files/git-2.31.0-darwin-prefix-gettext.patch b/dev-vcs/git/files/git-2.31.0-darwin-prefix-gettext.patch new file mode 100644 index 000000000000..df87def6073d --- /dev/null +++ b/dev-vcs/git/files/git-2.31.0-darwin-prefix-gettext.patch @@ -0,0 +1,22 @@ +Don't examine outside of the prefix for gettext on macOS/Darwin. +https://bugs.gentoo.org/757309 +--- a/config.mak.uname ++++ b/config.mak.uname +@@ -136,17 +136,6 @@ ifeq ($(uname_S),Darwin) + HAVE_BSD_SYSCTL = YesPlease + FREAD_READS_DIRECTORIES = UnfortunatelyYes + HAVE_NS_GET_EXECUTABLE_PATH = YesPlease +- +- # Workaround for `gettext` being keg-only and not even being linked via +- # `brew link --force gettext`, should be obsolete as of +- # https://github.com/Homebrew/homebrew-core/pull/53489 +- ifeq ($(shell test -d /usr/local/opt/gettext/ && echo y),y) +- BASIC_CFLAGS += -I/usr/local/include -I/usr/local/opt/gettext/include +- BASIC_LDFLAGS += -L/usr/local/lib -L/usr/local/opt/gettext/lib +- ifeq ($(shell test -x /usr/local/opt/gettext/bin/msgfmt && echo y),y) +- MSGFMT = /usr/local/opt/gettext/bin/msgfmt +- endif +- endif + endif + ifeq ($(uname_S),SunOS) + NEEDS_SOCKET = YesPlease diff --git a/dev-vcs/git/files/git-2.37.0_rc1-optional-cvs.patch b/dev-vcs/git/files/git-2.37.0_rc1-optional-cvs.patch new file mode 100644 index 000000000000..d6cdb6bcaad6 --- /dev/null +++ b/dev-vcs/git/files/git-2.37.0_rc1-optional-cvs.patch @@ -0,0 +1,459 @@ +From 35038d89fbd952e72023152478aa3cb070a907d8 Mon Sep 17 00:00:00 2001 +From: Robin Johnson <robbat2@gentoo.org> +Date: Tue, 14 May 2019 08:53:06 +0200 +Subject: [PATCH] Makefile: Add NO_CVS define to disable all CVS interface + utilities + +Forward-ported from 1.7.12 to current git.git v1.8.4 +Forward-ported from v1.8.4 to v1.8.5.1 +Forward-ported from v1.8.5.3 to v1.9.0_rc3 +Forward-ported from 1.9.0_rc3 to current git.git v2.0.0_rc0 +Forward-ported from v2.0.0_rc0 to v2.0.0 +Forward-ported from v2.0.0 to v2.2.2 +Forward-ported from v2.2.2 to v2.8.4 +Forward-ported from v2.8.4 to v2.10.0 +Forward-ported from v2.10.0 to v2.12.0 +Forward-ported from v2.12.0 to v2.17.0-rc1 +Forward-ported from v2.17.0-rc1 to v2.18.0-rc1 +Forward-ported from v2.18.0-rc1 to v2.22.0-rc0 +Forward-ported from v2.22.0-rc0 to v2.31.0-rc0 +Forward-ported from v2.31.0-rc0 to v2.33.0-rc0 +Forward-ported from v2.33.0-rc0 to v2.37.0-rc0 +Forward-ported from v2.37.0-rc0 to v2.37.0-rc1 + +Signed-off-by: Lars Wendler <polynomial-c@gentoo.org> +--- + Makefile | 50 ++++++++++++++++++++++-------- + t/t9200-git-cvsexportcommit.sh | 5 +++ + t/t9400-git-cvsserver-server.sh | 8 ++++- + t/t9401-git-cvsserver-crlf.sh | 15 ++++++--- + t/t9600-cvsimport.sh | 41 +++++++++++++++--------- + t/t9601-cvsimport-vendor-branch.sh | 11 +++++++ + t/t9602-cvsimport-branches-tags.sh | 11 +++++++ + t/t9603-cvsimport-patchsets.sh | 11 +++++++ + t/test-lib.sh | 1 + + 9 files changed, 119 insertions(+), 34 deletions(-) + +diff --git a/Makefile b/Makefile +index 04d0fd1fe6..31e00ec7e6 100644 +--- a/Makefile ++++ b/Makefile +@@ -316,6 +316,8 @@ include shared.mak + # + # Define NO_TCLTK if you do not want Tcl/Tk GUI. + # ++# Define NO_CVS if you do not want any CVS interface utilities. ++# + # The TCL_PATH variable governs the location of the Tcl interpreter + # used to optimize git-gui for your system. Only used if NO_TCLTK + # is not set. Defaults to the bare 'tclsh'. +@@ -605,6 +607,7 @@ PROGRAM_OBJS = + PROGRAMS = + EXCLUDED_PROGRAMS = + SCRIPT_PERL = ++SCRIPT_PERL_CVS = + SCRIPT_PYTHON = + SCRIPT_SH = + SCRIPT_LIB = +@@ -637,31 +640,33 @@ SCRIPT_LIB += git-sh-setup + + SCRIPT_PERL += git-add--interactive.perl + SCRIPT_PERL += git-archimport.perl +-SCRIPT_PERL += git-cvsexportcommit.perl +-SCRIPT_PERL += git-cvsimport.perl +-SCRIPT_PERL += git-cvsserver.perl + SCRIPT_PERL += git-send-email.perl + SCRIPT_PERL += git-svn.perl + ++SCRIPT_PERL_CVS += git-cvsexportcommit.perl ++SCRIPT_PERL_CVS += git-cvsimport.perl ++SCRIPT_PERL_CVS += git-cvsserver.perl ++ + SCRIPT_PYTHON += git-p4.py + + # Generated files for scripts + SCRIPT_SH_GEN = $(patsubst %.sh,%,$(SCRIPT_SH)) + SCRIPT_PERL_GEN = $(patsubst %.perl,%,$(SCRIPT_PERL)) ++SCRIPT_PERL_CVS_GEN = $(patsubst %.perl,%,$(SCRIPT_PERL_CVS)) + SCRIPT_PYTHON_GEN = $(patsubst %.py,%,$(SCRIPT_PYTHON)) + + # Individual rules to allow e.g. + # "make -C ../.. SCRIPT_PERL=contrib/foo/bar.perl build-perl-script" + # from subdirectories like contrib/*/ + .PHONY: build-perl-script build-sh-script build-python-script +-build-perl-script: $(SCRIPT_PERL_GEN) ++build-perl-script: $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN) + build-sh-script: $(SCRIPT_SH_GEN) + build-python-script: $(SCRIPT_PYTHON_GEN) + + .PHONY: install-perl-script install-sh-script install-python-script + install-sh-script: $(SCRIPT_SH_GEN) + $(INSTALL) $^ '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' +-install-perl-script: $(SCRIPT_PERL_GEN) ++install-perl-script: $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN) + $(INSTALL) $^ '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' + install-python-script: $(SCRIPT_PYTHON_GEN) + $(INSTALL) $^ '$(DESTDIR_SQ)$(gitexec_instdir_SQ)' +@@ -670,12 +675,13 @@ install-python-script: $(SCRIPT_PYTHON_GEN) + clean-sh-script: + $(RM) $(SCRIPT_SH_GEN) + clean-perl-script: +- $(RM) $(SCRIPT_PERL_GEN) ++ $(RM) $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN) + clean-python-script: + $(RM) $(SCRIPT_PYTHON_GEN) + + SCRIPTS = $(SCRIPT_SH_GEN) \ + $(SCRIPT_PERL_GEN) \ ++ $(SCRIPT_PERL_CVS_GEN) \ + $(SCRIPT_PYTHON_GEN) \ + git-instaweb + +@@ -2350,13 +2356,27 @@ git.res: git.rc GIT-VERSION-FILE GIT-PREFIX + -DGIT_VERSION="\\\"$(GIT_VERSION)\\\"" -i $< -o $@ + + # This makes sure we depend on the NO_PERL setting itself. +-$(SCRIPT_PERL_GEN): GIT-BUILD-OPTIONS ++$(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN): GIT-BUILD-OPTIONS ++ ++_SCRIPT_PERL_GEN = ++_SCRIPT_PERL_NOGEN = + + # Used for substitution in Perl modules. Disabled when using RUNTIME_PREFIX + # since the locale directory is injected. + perl_localedir_SQ = $(localedir_SQ) + + ifndef NO_PERL ++_SCRIPT_PERL_GEN = $(SCRIPT_PERL_GEN) ++ ++ifndef NO_CVS ++_SCRIPT_PERL_GEN += $(SCRIPT_PERL_CVS_GEN) ++else ++_SCRIPT_PERL_NOGEN += $(SCRIPT_PERL_CVS_GEN) ++_REASON = NO_CVS ++_REASON_CONTENT = $(NO_CVS) ++endif # NO_CVS ++ ++$(_SCRIPT_PERL_GEN): + PERL_HEADER_TEMPLATE = perl/header_templates/fixed_prefix.template.pl + PERL_DEFINES = + PERL_DEFINES += $(PERL_PATH_SQ) +@@ -2380,7 +2400,7 @@ endif + + PERL_DEFINES += $(gitexecdir) $(perllibdir) $(localedir) + +-$(SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE ++$(_SCRIPT_PERL_GEN): % : %.perl GIT-PERL-DEFINES GIT-PERL-HEADER GIT-VERSION-FILE + $(QUIET_GEN) \ + sed -e '1{' \ + -e ' s|#!.*perl|#!$(PERL_PATH_SQ)|' \ +@@ -2426,14 +2446,18 @@ git-instaweb: git-instaweb.sh GIT-SCRIPT-DEFINES + chmod +x $@+ && \ + mv $@+ $@ + else # NO_PERL +-$(SCRIPT_PERL_GEN) git-instaweb: % : unimplemented.sh +- $(QUIET_GEN) \ ++_SCRIPT_PERL_NOGEN += $(SCRIPT_PERL_GEN) $(SCRIPT_PERL_CVS_GEN) git-instaweb ++_REASON = NO_PERL ++_REASON_CONTENT = $(NO_PERL) ++endif # NO_PERL ++ ++$(_SCRIPT_PERL_NOGEN): % : unimplemented.sh ++ $(QUIET_GEN)$(RM) $@ $@+ && \ + sed -e '1s|#!.*/sh|#!$(SHELL_PATH_SQ)|' \ +- -e 's|@@REASON@@|NO_PERL=$(NO_PERL)|g' \ ++ -e 's|@@REASON@@|$(_REASON)=$(_REASON_CONTENT)|g' \ + unimplemented.sh >$@+ && \ + chmod +x $@+ && \ + mv $@+ $@ +-endif # NO_PERL + + # This makes sure we depend on the NO_PYTHON setting itself. + $(SCRIPT_PYTHON_GEN): GIT-BUILD-OPTIONS +@@ -2737,7 +2761,7 @@ MSGMERGE_FLAGS = --add-location --backup=off --update + LOCALIZED_C = $(sort $(FOUND_C_SOURCES) $(FOUND_H_SOURCES) $(SCALAR_SOURCES) \ + $(GENERATED_H)) + LOCALIZED_SH = $(sort $(SCRIPT_SH) git-sh-setup.sh) +-LOCALIZED_PERL = $(sort $(SCRIPT_PERL)) ++LOCALIZED_PERL = $(sort $(SCRIPT_PERL) $(SCRIPT_PERL_CVS)) + + ifdef XGETTEXT_INCLUDE_TESTS + LOCALIZED_C += t/t0200/test.c +diff --git a/t/t9200-git-cvsexportcommit.sh b/t/t9200-git-cvsexportcommit.sh +index c5946cb0b8..223fd5409b 100755 +--- a/t/t9200-git-cvsexportcommit.sh ++++ b/t/t9200-git-cvsexportcommit.sh +@@ -11,6 +11,11 @@ if ! test_have_prereq PERL; then + test_done + fi + ++if ! test_have_prereq CVS; then ++ skip_all='skipping git cvsexportcommit tests, cvs not available' ++ test_done ++fi ++ + cvs >/dev/null 2>&1 + if test $? -ne 1 + then +diff --git a/t/t9400-git-cvsserver-server.sh b/t/t9400-git-cvsserver-server.sh +index 210ddf09e3..a620126d3f 100755 +--- a/t/t9400-git-cvsserver-server.sh ++++ b/t/t9400-git-cvsserver-server.sh +@@ -14,9 +14,15 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + . ./test-lib.sh + + if ! test_have_prereq PERL; then +- skip_all='skipping git cvsserver tests, perl not available' ++ skip_all='skipping git-cvsserver tests, perl not available' + test_done + fi ++ ++if ! test_have_prereq CVS; then ++ skip_all='skipping git-cvsserver tests, cvs not available' ++ test_done ++fi ++ + cvs >/dev/null 2>&1 + if test $? -ne 1 + then +diff --git a/t/t9401-git-cvsserver-crlf.sh b/t/t9401-git-cvsserver-crlf.sh +index a34805acdc..0d7759f73b 100755 +--- a/t/t9401-git-cvsserver-crlf.sh ++++ b/t/t9401-git-cvsserver-crlf.sh +@@ -60,15 +60,20 @@ check_status_options() { + return $stat + } + +-cvs >/dev/null 2>&1 +-if test $? -ne 1 ++if ! test_have_prereq PERL + then +- skip_all='skipping git-cvsserver tests, cvs not found' ++ skip_all='skipping git-cvsserver tests, perl not available' + test_done + fi +-if ! test_have_prereq PERL ++if ! test_have_prereq CVS + then +- skip_all='skipping git-cvsserver tests, perl not available' ++ skip_all='skipping git-cvsserver tests, cvs not available' ++ test_done ++fi ++cvs >/dev/null 2>&1 ++if test $? -ne 1 ++then ++ skip_all='skipping git-cvsserver tests, cvs not found' + test_done + fi + perl -e 'use DBI; use DBD::SQLite' >/dev/null 2>&1 || { +diff --git a/t/t9600-cvsimport.sh b/t/t9600-cvsimport.sh +index 5680849218..7288db820b 100755 +--- a/t/t9600-cvsimport.sh ++++ b/t/t9600-cvsimport.sh +@@ -11,14 +11,25 @@ if ! test_have_prereq NOT_ROOT; then + test_done + fi + +-test_expect_success PERL 'setup cvsroot environment' ' ++if ! test_have_prereq PERL ++then ++ skip_all='skipping git cvsimport tests, perl not available' ++ test_done ++fi ++if ! test_have_prereq CVS ++then ++ skip_all='skipping git cvsimport tests, cvs not available' ++ test_done ++fi ++ ++test_expect_success 'setup cvsroot environment' ' + CVSROOT=$(pwd)/cvsroot && + export CVSROOT + ' + +-test_expect_success PERL 'setup cvsroot' '$CVS init' ++test_expect_success 'setup cvsroot' '$CVS init' + +-test_expect_success PERL 'setup a cvs module' ' ++test_expect_success 'setup a cvs module' ' + + mkdir "$CVSROOT/module" && + $CVS co -d module-cvs module && +@@ -50,23 +61,23 @@ EOF + ) + ' + +-test_expect_success PERL 'import a trivial module' ' ++test_expect_success 'import a trivial module' ' + + git cvsimport -a -R -z 0 -C module-git module && + test_cmp module-cvs/o_fortuna module-git/o_fortuna + + ' + +-test_expect_success PERL 'pack refs' '(cd module-git && git gc)' ++test_expect_success 'pack refs' '(cd module-git && git gc)' + +-test_expect_success PERL 'initial import has correct .git/cvs-revisions' ' ++test_expect_success 'initial import has correct .git/cvs-revisions' ' + + (cd module-git && + git log --format="o_fortuna 1.1 %H" -1) > expected && + test_cmp expected module-git/.git/cvs-revisions + ' + +-test_expect_success PERL 'update cvs module' ' ++test_expect_success 'update cvs module' ' + (cd module-cvs && + cat <<EOF >o_fortuna && + O Fortune, +@@ -94,7 +105,7 @@ EOF + ) + ' + +-test_expect_success PERL 'update git module' ' ++test_expect_success 'update git module' ' + + (cd module-git && + git config cvsimport.trackRevisions true && +@@ -105,7 +116,7 @@ test_expect_success PERL 'update git module' ' + + ' + +-test_expect_success PERL 'update has correct .git/cvs-revisions' ' ++test_expect_success 'update has correct .git/cvs-revisions' ' + + (cd module-git && + git log --format="o_fortuna 1.1 %H" -1 HEAD^ && +@@ -113,7 +124,7 @@ test_expect_success PERL 'update has correct .git/cvs-revisions' ' + test_cmp expected module-git/.git/cvs-revisions + ' + +-test_expect_success PERL 'update cvs module' ' ++test_expect_success 'update cvs module' ' + + (cd module-cvs && + echo 1 >tick && +@@ -122,7 +133,7 @@ test_expect_success PERL 'update cvs module' ' + ) + ' + +-test_expect_success PERL 'cvsimport.module config works' ' ++test_expect_success 'cvsimport.module config works' ' + + (cd module-git && + git config cvsimport.module module && +@@ -134,7 +145,7 @@ test_expect_success PERL 'cvsimport.module config works' ' + + ' + +-test_expect_success PERL 'second update has correct .git/cvs-revisions' ' ++test_expect_success 'second update has correct .git/cvs-revisions' ' + + (cd module-git && + git log --format="o_fortuna 1.1 %H" -1 HEAD^^ && +@@ -143,7 +154,7 @@ test_expect_success PERL 'second update has correct .git/cvs-revisions' ' + test_cmp expected module-git/.git/cvs-revisions + ' + +-test_expect_success PERL 'import from a CVS working tree' ' ++test_expect_success 'import from a CVS working tree' ' + + $CVS co -d import-from-wt module && + (cd import-from-wt && +@@ -156,12 +167,12 @@ test_expect_success PERL 'import from a CVS working tree' ' + + ' + +-test_expect_success PERL 'no .git/cvs-revisions created by default' ' ++test_expect_success 'no .git/cvs-revisions created by default' ' + + ! test -e import-from-wt/.git/cvs-revisions + + ' + +-test_expect_success PERL 'test entire HEAD' 'test_cmp_branch_tree main' ++test_expect_success 'test entire HEAD' 'test_cmp_branch_tree main' + + test_done +diff --git a/t/t9601-cvsimport-vendor-branch.sh b/t/t9601-cvsimport-vendor-branch.sh +index 116cddba3a..a7e7299c81 100755 +--- a/t/t9601-cvsimport-vendor-branch.sh ++++ b/t/t9601-cvsimport-vendor-branch.sh +@@ -37,6 +37,17 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + + . ./lib-cvs.sh + ++if ! test_have_prereq PERL ++then ++ skip_all='skipping git cvsimport tests, perl not available' ++ test_done ++fi ++if ! test_have_prereq CVS ++then ++ skip_all='skipping git cvsimport tests, cvs not available' ++ test_done ++fi ++ + setup_cvs_test_repository t9601 + + test_expect_success PERL 'import a module with a vendor branch' ' +diff --git a/t/t9602-cvsimport-branches-tags.sh b/t/t9602-cvsimport-branches-tags.sh +index e5266c9a87..0e1878ffd3 100755 +--- a/t/t9602-cvsimport-branches-tags.sh ++++ b/t/t9602-cvsimport-branches-tags.sh +@@ -9,6 +9,17 @@ export GIT_TEST_DEFAULT_INITIAL_BRANCH_NAME + + . ./lib-cvs.sh + ++if ! test_have_prereq PERL ++then ++ skip_all='skipping git cvsimport tests, perl not available' ++ test_done ++fi ++if ! test_have_prereq CVS ++then ++ skip_all='skipping git cvsimport tests, cvs not available' ++ test_done ++fi ++ + setup_cvs_test_repository t9602 + + test_expect_success PERL 'import module' ' +diff --git a/t/t9603-cvsimport-patchsets.sh b/t/t9603-cvsimport-patchsets.sh +index 19f38f78f2..bd5727e8bf 100755 +--- a/t/t9603-cvsimport-patchsets.sh ++++ b/t/t9603-cvsimport-patchsets.sh +@@ -14,6 +14,17 @@ + test_description='git cvsimport testing for correct patchset estimation' + . ./lib-cvs.sh + ++if ! test_have_prereq PERL ++then ++ skip_all='skipping git cvsimport tests, perl not available' ++ test_done ++fi ++if ! test_have_prereq CVS ++then ++ skip_all='skipping git cvsimport tests, cvs not available' ++ test_done ++fi ++ + setup_cvs_test_repository t9603 + + test_expect_failure PERL 'import with criss cross times on revisions' ' +diff --git a/t/test-lib.sh b/t/test-lib.sh +index 55857af601..791aa324a9 100644 +--- a/t/test-lib.sh ++++ b/t/test-lib.sh +@@ -1573,6 +1573,7 @@ test_set_prereq REFFILES + + ( COLUMNS=1 && test $COLUMNS = 1 ) && test_set_prereq COLUMNS_CAN_BE_1 + test -z "$NO_CURL" && test_set_prereq LIBCURL ++test -z "$NO_CVS" && test_set_prereq CVS + test -z "$NO_PERL" && test_set_prereq PERL + test -z "$NO_PTHREADS" && test_set_prereq PTHREADS + test -z "$NO_PYTHON" && test_set_prereq PYTHON +-- +2.37.0.rc0 + diff --git a/dev-vcs/git/files/git-2.37.2-darwin-prefix-gettext.patch b/dev-vcs/git/files/git-2.37.2-darwin-prefix-gettext.patch new file mode 100644 index 000000000000..af267347e65e --- /dev/null +++ b/dev-vcs/git/files/git-2.37.2-darwin-prefix-gettext.patch @@ -0,0 +1,22 @@ +Don't examine outside of the prefix for gettext on macOS/Darwin. +https://bugs.gentoo.org/757309 +--- a/config.mak.uname ++++ b/config.mak.uname +@@ -148,17 +148,6 @@ ifeq ($(uname_S),Darwin) + HAVE_NS_GET_EXECUTABLE_PATH = YesPlease + CSPRNG_METHOD = arc4random + +- # Workaround for `gettext` being keg-only and not even being linked via +- # `brew link --force gettext`, should be obsolete as of +- # https://github.com/Homebrew/homebrew-core/pull/53489 +- ifeq ($(shell test -d /usr/local/opt/gettext/ && echo y),y) +- BASIC_CFLAGS += -I/usr/local/include -I/usr/local/opt/gettext/include +- BASIC_LDFLAGS += -L/usr/local/lib -L/usr/local/opt/gettext/lib +- ifeq ($(shell test -x /usr/local/opt/gettext/bin/msgfmt && echo y),y) +- MSGFMT = /usr/local/opt/gettext/bin/msgfmt +- endif +- endif +- + # The builtin FSMonitor on MacOS builds upon Simple-IPC. Both require + # Unix domain sockets and PThreads. + ifndef NO_PTHREADS diff --git a/dev-vcs/git/files/git-2.37.2-unsafe-directory.patch b/dev-vcs/git/files/git-2.37.2-unsafe-directory.patch new file mode 100644 index 000000000000..27bf5413753a --- /dev/null +++ b/dev-vcs/git/files/git-2.37.2-unsafe-directory.patch @@ -0,0 +1,14 @@ +Neuter the "safe directory" feature, except for tests. +--- a/setup.c ++++ b/setup.c +@@ -1157,7 +1157,9 @@ static int ensure_valid_ownership(const char *gitfile, + */ + read_very_early_config(safe_directory_cb, &data); + +- return data.is_safe; ++ if (git_env_bool("GIT_TEST_ASSUME_DIFFERENT_OWNER", 0)) ++ return data.is_safe; ++ return 1; + } + + enum discovery_result { diff --git a/dev-vcs/git/files/git-2.46.2-unsafe-directory.patch b/dev-vcs/git/files/git-2.46.2-unsafe-directory.patch new file mode 100644 index 000000000000..0e07371a0d88 --- /dev/null +++ b/dev-vcs/git/files/git-2.46.2-unsafe-directory.patch @@ -0,0 +1,14 @@ +Neuter the "safe directory" feature, except for tests. +--- a/setup.c ++++ b/setup.c +@@ -1316,7 +1316,9 @@ static int ensure_valid_ownership(const char *gitfile, + git_protected_config(safe_directory_cb, &data); + + free(data.path); +- return data.is_safe; ++ if (git_env_bool("GIT_TEST_ASSUME_DIFFERENT_OWNER", 0)) ++ return data.is_safe; ++ return 1; + } + + void die_upon_dubious_ownership(const char *gitfile, const char *worktree, diff --git a/dev-vcs/git/files/git-2.47.0-maintenance.patch b/dev-vcs/git/files/git-2.47.0-maintenance.patch new file mode 100644 index 000000000000..085d4adac33f --- /dev/null +++ b/dev-vcs/git/files/git-2.47.0-maintenance.patch @@ -0,0 +1,85 @@ +https://lore.kernel.org/git/CAG=Um+0mJW-oAH+YLC3dWEU64JwS-zMkkTiFWYBe4g6HMbe-iA@mail.gmail.com/ +https://github.com/git/git/commit/c95547a394a35dc26afa686454086d2db6e51ea4 + +From c95547a394a35dc26afa686454086d2db6e51ea4 Mon Sep 17 00:00:00 2001 +From: Patrick Steinhardt <ps@pks.im> +Date: Thu, 10 Oct 2024 07:33:01 +0200 +Subject: [PATCH] builtin/gc: fix crash when running `git maintenance start` + +It was reported on the mailing list that running `git maintenance start` +immediately segfaults starting with b6c3f8e12c (builtin/maintenance: fix +leak in `get_schedule_cmd()`, 2024-09-26). And indeed, this segfault is +trivial to reproduce up to a point where one is scratching their head +why we didn't catch this regression in our test suite. + +The root cause of this error is `get_schedule_cmd()`, which does not +populate the `out` parameter in all cases anymore starting with the +mentioned commit. Callers do assume it to always be populated though and +will e.g. call `strvec_split()` on the returned value, which will of +course segfault when the variable is uninitialized. + +So why didn't we catch this trivial regression? The reason is that our +tests always set up the "GIT_TEST_MAINT_SCHEDULER" environment variable +via "t/test-lib.sh", which allows us to override the scheduler command +with a custom one so that we don't accidentally modify the developer's +system. But the faulty code where we don't set the `out` parameter will +only get hit in case that environment variable is _not_ set, which is +never the case when executing our tests. + +Fix the regression by again unconditionally allocating the value in the +`out` parameter, if provided. Add a test that unsets the environment +variable to catch future regressions in this area. + +Reported-by: Shubham Kanodia <shubham.kanodia10@gmail.com> +Signed-off-by: Patrick Steinhardt <ps@pks.im> +Signed-off-by: Junio C Hamano <gitster@pobox.com> +--- a/builtin/gc.c ++++ b/builtin/gc.c +@@ -1794,7 +1794,7 @@ static const char *get_frequency(enum schedule_priority schedule) + * | Input | Output | + * | *cmd | return code | *out | *is_available | + * +-------+-------------+-------------------+---------------+ +- * | "foo" | false | NULL | (unchanged) | ++ * | "foo" | false | "foo" (allocated) | (unchanged) | + * +-------+-------------+-------------------+---------------+ + * + * GIT_TEST_MAINT_SCHEDULER set to “foo:./mock_foo.sh,bar:./mock_bar.sh” +@@ -1812,8 +1812,11 @@ static int get_schedule_cmd(const char *cmd, int *is_available, char **out) + struct string_list_item *item; + struct string_list list = STRING_LIST_INIT_NODUP; + +- if (!testing) ++ if (!testing) { ++ if (out) ++ *out = xstrdup(cmd); + return 0; ++ } + + if (is_available) + *is_available = 0; +--- a/t/t7900-maintenance.sh ++++ b/t/t7900-maintenance.sh +@@ -646,6 +646,22 @@ test_expect_success !MINGW 'register and unregister with regex metacharacters' ' + maintenance.repo "$(pwd)/$META" + ' + ++test_expect_success 'start without GIT_TEST_MAINT_SCHEDULER' ' ++ test_when_finished "rm -rf systemctl.log script repo" && ++ mkdir script && ++ write_script script/systemctl <<-\EOF && ++ echo "$*" >>../systemctl.log ++ EOF ++ git init repo && ++ ( ++ cd repo && ++ sane_unset GIT_TEST_MAINT_SCHEDULER && ++ PATH="$PWD/../script:$PATH" git maintenance start --scheduler=systemd ++ ) && ++ test_grep -- "--user list-timers" systemctl.log && ++ test_grep -- "enable --now git-maintenance@" systemctl.log ++' ++ + test_expect_success 'start --scheduler=<scheduler>' ' + test_expect_code 129 git maintenance start --scheduler=foo 2>err && + test_grep "unrecognized --scheduler argument" err && + diff --git a/dev-vcs/git/files/git-2.48.1-macos-no-fsmonitor.patch b/dev-vcs/git/files/git-2.48.1-macos-no-fsmonitor.patch new file mode 100644 index 000000000000..f1b89e736f46 --- /dev/null +++ b/dev-vcs/git/files/git-2.48.1-macos-no-fsmonitor.patch @@ -0,0 +1,39 @@ +meson.build: allow to disable fsmonitor backend for macOS + +Gentoo Prefix toolchain and setup does not enable CoreServices Framework +by default, so simply allow to disable the fsmonitor backend + +Signed-off-by: Fabian Groffen <grobian@gentoo.org> + +--- a/meson.build ++++ b/meson.build +@@ -1117,11 +1117,13 @@ + endif + + fsmonitor_backend = '' +-if host_machine.system() == 'windows' +- fsmonitor_backend = 'win32' +-elif host_machine.system() == 'darwin' +- fsmonitor_backend = 'darwin' +- libgit_dependencies += dependency('CoreServices') ++if get_option('fsmonitor') ++ if host_machine.system() == 'windows' ++ fsmonitor_backend = 'win32' ++ elif host_machine.system() == 'darwin' ++ fsmonitor_backend = 'darwin' ++ libgit_dependencies += dependency('CoreServices') ++ endif + endif + if fsmonitor_backend != '' + libgit_c_args += '-DHAVE_FSMONITOR_DAEMON_BACKEND' +--- a/meson_options.txt ++++ b/meson_options.txt +@@ -57,6 +57,8 @@ + # Build tweaks. + option('macos_use_homebrew_gettext', type: 'boolean', value: true, + description: 'Use gettext from Homebrew instead of the slightly-broken system-provided one.') ++option('fsmonitor', type: 'boolean', value: true, ++ description: 'Build fsmonitor backend on supported platforms.') + + # gitweb configuration. + option('gitweb_config', type: 'string', value: 'gitweb_config.perl') diff --git a/dev-vcs/git/files/git-2.50.0-diff-implement-config.diff.renames-copies-harder.patch b/dev-vcs/git/files/git-2.50.0-diff-implement-config.diff.renames-copies-harder.patch new file mode 100644 index 000000000000..f815ff7bedc5 --- /dev/null +++ b/dev-vcs/git/files/git-2.50.0-diff-implement-config.diff.renames-copies-harder.patch @@ -0,0 +1,163 @@ +https://lore.kernel.org/git/20240311213928.1872437-1-sam@gentoo.org/ + +From afe0cc87d790d7dbf33b83cf3e1ae23d5646e8e9 Mon Sep 17 00:00:00 2001 +Message-ID: <afe0cc87d790d7dbf33b83cf3e1ae23d5646e8e9.1749343442.git.sam@gentoo.org> +From: Sam James <sam@gentoo.org> +Date: Fri, 16 Feb 2024 22:07:54 +0000 +Subject: [PATCH] diff: implement config.diff.renames=copies-harder + +This patch adds a config value for 'diff.renames' called 'copies-harder' +which make it so '-C -C' is in effect always passed for 'git log -p', +'git diff', etc. + +This allows specifying that 'git log -p', 'git diff', etc should always act +as if '-C --find-copies-harder' was passed. + +It has proven this especially useful for certain types of repository (like +Gentoo's ebuild repositories) because files are often copies of a previous +version: + +Suppose a directory 'sys-devel/gcc' contains recipes for building +GCC, with one file for each supported upstream branch: + gcc-13.x.build.recipe + gcc-12.x.build.recipe + gcc-11.x.build.recipe + gcc-10.x.build.recipe + +gcc-13.x.build.recipe was started as a copy of gcc-12.x.build.recipe +(which was started as a copy of gcc-11.x.build.recipe, etc.). Previous versions +are kept around to support parallel installation of multiple versions. + +Being able to easily observe the diff relative to other recipes within the +directory has been a quality of life improvement for such repo layouts. + +Signed-off-by: Sam James <sam@gentoo.org> +--- + Documentation/config/diff.adoc | 6 +++--- + Documentation/config/status.adoc | 4 +++- + diff.c | 11 +++++++++-- + diff.h | 1 + + diffcore-rename.c | 6 ++++-- + merge-ort.c | 2 +- + 6 files changed, 21 insertions(+), 9 deletions(-) + +diff --git a/Documentation/config/diff.adoc b/Documentation/config/diff.adoc +index 1135a62a0a..5362d8091e 100644 +--- a/Documentation/config/diff.adoc ++++ b/Documentation/config/diff.adoc +@@ -158,9 +158,9 @@ endif::git-diff[] + Whether and how Git detects renames. If set to `false`, + rename detection is disabled. If set to `true`, basic rename + detection is enabled. If set to `copies` or `copy`, Git will +- detect copies, as well. Defaults to `true`. Note that this +- affects only `git diff` Porcelain like linkgit:git-diff[1] and +- linkgit:git-log[1], and not lower level commands such as ++ detect copies, as well. Defaults to `true`. ++ Note that this affects only 'git diff' Porcelain like linkgit:git-diff[1] ++ and linkgit:git-log[1], and not lower level commands such as + linkgit:git-diff-files[1]. + + `diff.suppressBlankEmpty`:: +diff --git a/Documentation/config/status.adoc b/Documentation/config/status.adoc +index 8caf90f51c..e15add32a3 100644 +--- a/Documentation/config/status.adoc ++++ b/Documentation/config/status.adoc +@@ -33,7 +33,9 @@ status.renames:: + Whether and how Git detects renames in linkgit:git-status[1] and + linkgit:git-commit[1] . If set to "false", rename detection is + disabled. If set to "true", basic rename detection is enabled. +- If set to "copies" or "copy", Git will detect copies, as well. ++ If set to "copies" or "copy", Git will detect copies, as well. If set ++ to "copies-harder", Git will spend extra cycles to find more copies even ++ in unmodified paths, see '--find-copies-harder' in linkgit:git-diff[1]. + Defaults to the value of diff.renames. + + status.showStash:: +diff --git a/diff.c b/diff.c +index 90e8003dd1..f0ca884280 100644 +--- a/diff.c ++++ b/diff.c +@@ -212,6 +212,8 @@ int git_config_rename(const char *var, const char *value) + { + if (!value) + return DIFF_DETECT_RENAME; ++ if (!strcasecmp(value, "copies-harder")) ++ return DIFF_DETECT_COPY_HARDER; + if (!strcasecmp(value, "copies") || !strcasecmp(value, "copy")) + return DIFF_DETECT_COPY; + return git_config_bool(var,value) ? DIFF_DETECT_RENAME : 0; +@@ -4902,8 +4904,12 @@ void diff_setup_done(struct diff_options *options) + else + options->flags.diff_from_contents = 0; + +- if (options->flags.find_copies_harder) ++ /* Just fold this in as it makes the patch-to-git smaller */ ++ if (options->flags.find_copies_harder || ++ options->detect_rename == DIFF_DETECT_COPY_HARDER) { ++ options->flags.find_copies_harder = 1; + options->detect_rename = DIFF_DETECT_COPY; ++ } + + if (!options->flags.relative_name) + options->prefix = NULL; +@@ -5342,7 +5348,8 @@ static int diff_opt_find_copies(const struct option *opt, + if (*arg != 0) + return error(_("invalid argument to %s"), opt->long_name); + +- if (options->detect_rename == DIFF_DETECT_COPY) ++ if (options->detect_rename == DIFF_DETECT_COPY || ++ options->detect_rename == DIFF_DETECT_COPY_HARDER) + options->flags.find_copies_harder = 1; + else + options->detect_rename = DIFF_DETECT_COPY; +diff --git a/diff.h b/diff.h +index 62e5768a9a..8c8aa6cbb6 100644 +--- a/diff.h ++++ b/diff.h +@@ -594,6 +594,7 @@ int git_config_rename(const char *var, const char *value); + + #define DIFF_DETECT_RENAME 1 + #define DIFF_DETECT_COPY 2 ++#define DIFF_DETECT_COPY_HARDER 3 + + #define DIFF_PICKAXE_ALL 1 + #define DIFF_PICKAXE_REGEX 2 +diff --git a/diffcore-rename.c b/diffcore-rename.c +index 7723bc3334..34a883a55d 100644 +--- a/diffcore-rename.c ++++ b/diffcore-rename.c +@@ -302,7 +302,8 @@ static int find_identical_files(struct hashmap *srcs, + } + /* Give higher scores to sources that haven't been used already */ + score = !source->rename_used; +- if (source->rename_used && options->detect_rename != DIFF_DETECT_COPY) ++ if (source->rename_used && options->detect_rename != DIFF_DETECT_COPY && ++ options->detect_rename != DIFF_DETECT_COPY_HARDER) + continue; + score += basename_same(source, target); + if (score > best_score) { +@@ -1407,7 +1408,8 @@ void diffcore_rename_extended(struct diff_options *options, + trace2_region_enter("diff", "setup", options->repo); + info.setup = 0; + ASSERT(!dir_rename_count || strmap_empty(dir_rename_count)); +- want_copies = (detect_rename == DIFF_DETECT_COPY); ++ want_copies = (detect_rename == DIFF_DETECT_COPY || ++ detect_rename == DIFF_DETECT_COPY_HARDER); + if (dirs_removed && (break_idx || want_copies)) + BUG("dirs_removed incompatible with break/copy detection"); + if (break_idx && relevant_sources) +diff --git a/merge-ort.c b/merge-ort.c +index 47b3d1730e..cb090c7af5 100644 +--- a/merge-ort.c ++++ b/merge-ort.c +@@ -4957,7 +4957,7 @@ static void merge_start(struct merge_options *opt, struct merge_result *result) + * sanity check them anyway. + */ + assert(opt->detect_renames >= -1 && +- opt->detect_renames <= DIFF_DETECT_COPY); ++ opt->detect_renames <= DIFF_DETECT_COPY_HARDER); + assert(opt->verbosity >= 0 && opt->verbosity <= 5); + assert(opt->buffer_output <= 2); + assert(opt->obuf.len == 0); +-- +2.49.0 diff --git a/dev-vcs/git/files/git-2.54.0-0001-rust-don-t-pass-quiet-to-cargo.patch b/dev-vcs/git/files/git-2.54.0-0001-rust-don-t-pass-quiet-to-cargo.patch new file mode 100644 index 000000000000..795e33e5e711 --- /dev/null +++ b/dev-vcs/git/files/git-2.54.0-0001-rust-don-t-pass-quiet-to-cargo.patch @@ -0,0 +1,30 @@ +From 0f7b6cf83c868a009c9843522429ba6810990ae6 Mon Sep 17 00:00:00 2001 +Message-ID: <0f7b6cf83c868a009c9843522429ba6810990ae6.1776707419.git.sam@gentoo.org> +From: Sam James <sam@gentoo.org> +Date: Tue, 18 Nov 2025 18:10:03 +0000 +Subject: [PATCH 1/2] rust: don't pass --quiet to cargo + +This obscures that cargo is being invoked at all and it means even +ninja --verbose has no mention of it other than invoking the target. + +Signed-off-by: Sam James <sam@gentoo.org> +--- + src/cargo-meson.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cargo-meson.sh b/src/cargo-meson.sh +index 75f3cd1265..26a6d3bb16 100755 +--- a/src/cargo-meson.sh ++++ b/src/cargo-meson.sh +@@ -31,7 +31,7 @@ case "$(cargo -vV | sed -n 's/^host: \(.*\)$/\1/p')" in + LIBNAME=libgitcore.a;; + esac + +-cargo build --lib --quiet --manifest-path="$SOURCE_DIR/Cargo.toml" --target-dir="$BUILD_DIR" "$@" ++cargo build --lib --manifest-path="$SOURCE_DIR/Cargo.toml" --target-dir="$BUILD_DIR" "$@" + RET=$? + if test $RET -ne 0 + then +-- +2.53.0 + diff --git a/dev-vcs/git/files/git-2.54.0-0002-rust-respect-CARGO-environment-variable.patch b/dev-vcs/git/files/git-2.54.0-0002-rust-respect-CARGO-environment-variable.patch new file mode 100644 index 000000000000..da7148e34e36 --- /dev/null +++ b/dev-vcs/git/files/git-2.54.0-0002-rust-respect-CARGO-environment-variable.patch @@ -0,0 +1,32 @@ +From 1fe93707dbb6d9c5214250f576151cb5cec3762f Mon Sep 17 00:00:00 2001 +Message-ID: <1fe93707dbb6d9c5214250f576151cb5cec3762f.1776707419.git.sam@gentoo.org> +In-Reply-To: <0f7b6cf83c868a009c9843522429ba6810990ae6.1776707419.git.sam@gentoo.org> +References: <0f7b6cf83c868a009c9843522429ba6810990ae6.1776707419.git.sam@gentoo.org> +From: Sam James <sam@gentoo.org> +Date: Tue, 18 Nov 2025 18:10:47 +0000 +Subject: [PATCH 2/2] rust: respect $CARGO environment variable + +Respect the CARGO environment variable if set. Gentoo uses this to +control the version of rust/cargo for a build. + +Signed-off-by: Sam James <sam@gentoo.org> +--- + src/cargo-meson.sh | 2 +- + 1 file changed, 1 insertion(+), 1 deletion(-) + +diff --git a/src/cargo-meson.sh b/src/cargo-meson.sh +index 26a6d3bb16..b7b9578861 100755 +--- a/src/cargo-meson.sh ++++ b/src/cargo-meson.sh +@@ -31,7 +31,7 @@ case "$(cargo -vV | sed -n 's/^host: \(.*\)$/\1/p')" in + LIBNAME=libgitcore.a;; + esac + +-cargo build --lib --manifest-path="$SOURCE_DIR/Cargo.toml" --target-dir="$BUILD_DIR" "$@" ++${CARGO:-cargo} build --lib --manifest-path="$SOURCE_DIR/Cargo.toml" --target-dir="$BUILD_DIR" "$@" + RET=$? + if test $RET -ne 0 + then +-- +2.53.0 + diff --git a/dev-vcs/git/files/git-2.7.0-mediawiki-500pages.patch b/dev-vcs/git/files/git-2.7.0-mediawiki-500pages.patch new file mode 100644 index 000000000000..0ce706db99a6 --- /dev/null +++ b/dev-vcs/git/files/git-2.7.0-mediawiki-500pages.patch @@ -0,0 +1,46 @@ +Searching for pages using the MediaWiki API returns at most 500 results +(hi Patrick). To get a list of all pages in a larger wiki, we need to run +repeated searches... + +Source: https://github.com/moy/Git-Mediawiki/issues/32 +Author: anarcat https://github.com/anarcat + +diff --git a/contrib/mw-to-git/git-remote-mediawiki.perl b/contrib/mw-to-git/git-remote-mediawiki.perl +index 8dd74a9..f2ce311 100755 +--- a/contrib/mw-to-git/git-remote-mediawiki.perl ++++ b/contrib/mw-to-git/git-remote-mediawiki.perl +@@ -259,16 +259,29 @@ sub get_mw_tracked_categories { + sub get_mw_all_pages { + my $pages = shift; + # No user-provided list, get the list of pages from the API. +- my $mw_pages = $mediawiki->list({ ++ my $query = { + action => 'query', + list => 'allpages', + aplimit => 'max' +- }); +- if (!defined($mw_pages)) { ++ }; ++ my $curpage; ++ my $oldpage = ''; ++ while (1) { ++ if (defined($curpage)) { ++ if ($oldpage eq $curpage) { ++ last; ++ } ++ $query->{apfrom} = $curpage; ++ $oldpage = $curpage; ++ } ++ my $mw_pages = $mediawiki->list($query); ++ if (!defined($mw_pages)) { + fatal_mw_error("get the list of wiki pages"); +- } +- foreach my $page (@{$mw_pages}) { ++ } ++ foreach my $page (@{$mw_pages}) { + $pages->{$page->{title}} = $page; ++ $curpage = $page->{title}; ++ } + } + return; + } diff --git a/dev-vcs/git/files/git-2.7.0-mediawiki-namespaces.patch b/dev-vcs/git/files/git-2.7.0-mediawiki-namespaces.patch new file mode 100644 index 000000000000..72ab2126fa9c --- /dev/null +++ b/dev-vcs/git/files/git-2.7.0-mediawiki-namespaces.patch @@ -0,0 +1,97 @@ +source: +https://gist.github.com/anarcat/f821fa285c6b8b6b16a5 +https://github.com/moy/Git-Mediawiki/issues/10 + + +From 147224cfe6143c44b16aec0bb6d6a506a6b96ced Mon Sep 17 00:00:00 2001 +From: Kevin <kevin@ki-ai.org> +Date: Fri, 28 Aug 2015 15:53:37 -0500 +Subject: [PATCH] Add namespace support to git-mediawiki + +Signed-off-by: Kevin <kevin@ki-ai.org> +--- + contrib/mw-to-git/git-remote-mediawiki.perl | 34 +++++++++++++++++++++++++++-- + 1 file changed, 32 insertions(+), 2 deletions(-) + +diff --git a/contrib/mw-to-git/git-remote-mediawiki.perl b/contrib/mw-to-git/git-remote-mediawiki.perl +index 8dd74a9..662a5b5 100755 +--- a/contrib/mw-to-git/git-remote-mediawiki.perl ++++ b/contrib/mw-to-git/git-remote-mediawiki.perl +@@ -17,6 +17,7 @@ use Git; + use Git::Mediawiki qw(clean_filename smudge_filename connect_maybe + EMPTY HTTP_CODE_OK); + use DateTime::Format::ISO8601; ++use Scalar::Util; + use warnings; + + # By default, use UTF-8 to communicate with Git and the user +@@ -63,6 +64,10 @@ chomp(@tracked_pages); + my @tracked_categories = split(/[ \n]/, run_git("config --get-all remote.${remotename}.categories")); + chomp(@tracked_categories); + ++# Just like @tracked_categories, but for MediaWiki namespaces. ++my @tracked_namespaces = split(/[ \n]/, run_git("config --get-all remote.${remotename}.namespaces")); ++chomp(@tracked_namespaces); ++ + # Import media files on pull + my $import_media = run_git("config --get --bool remote.${remotename}.mediaimport"); + chomp($import_media); +@@ -256,6 +261,23 @@ sub get_mw_tracked_categories { + return; + } + ++sub get_mw_tracked_namespaces { ++ my $pages = shift; ++ foreach my $local_namespace (@tracked_namespaces) { ++ my $mw_pages = $mediawiki->list( { ++ action => 'query', ++ list => 'allpages', ++ apnamespace => get_mw_namespace_id($local_namespace), ++ aplimit => 'max' } ) ++ || die $mediawiki->{error}->{code} . ': ' ++ . $mediawiki->{error}->{details} . "\n"; ++ foreach my $page (@{$mw_pages}) { ++ $pages->{$page->{title}} = $page; ++ } ++ } ++ return; ++} ++ + sub get_mw_all_pages { + my $pages = shift; + # No user-provided list, get the list of pages from the API. +@@ -319,6 +341,10 @@ sub get_mw_pages { + $user_defined = 1; + get_mw_tracked_categories(\%pages); + } ++ if (@tracked_namespaces) { ++ $user_defined = 1; ++ get_mw_tracked_namespaces(\%pages); ++ } + if (!$user_defined) { + get_mw_all_pages(\%pages); + } +@@ -1263,7 +1289,6 @@ my %cached_mw_namespace_id; + sub get_mw_namespace_id { + $mediawiki = connect_maybe($mediawiki, $remotename, $url); + my $name = shift; +- + if (!exists $namespace_id{$name}) { + # Look at configuration file, if the record for that namespace is + # already cached. Namespaces are stored in form: +@@ -1331,7 +1356,12 @@ sub get_mw_namespace_id { + sub get_mw_namespace_id_for_page { + my $namespace = shift; + if ($namespace =~ /^([^:]*):/) { +- return get_mw_namespace_id($namespace); ++ my ($ns, $id) = split(/:/, $namespace); ++ if (Scalar::Util::looks_like_number($id)) { ++ return get_mw_namespace_id($ns); ++ } else{ ++ return ++ } + } else { + return; + } +-- +2.5.0 diff --git a/dev-vcs/git/files/git-2.7.0-mediawiki-subpages.patch b/dev-vcs/git/files/git-2.7.0-mediawiki-subpages.patch new file mode 100644 index 000000000000..c798a894d3f8 --- /dev/null +++ b/dev-vcs/git/files/git-2.7.0-mediawiki-subpages.patch @@ -0,0 +1,48 @@ +From 2593304723c6def159c10b9060dafa78a775a057 Mon Sep 17 00:00:00 2001 +From: Lyubomyr Shaydariv <lyubomyr-shaydariv@users.noreply.github.com> +Date: Fri, 11 Sep 2015 00:41:17 +0300 +Subject: [PATCH] git-remote-mediawiki: support subpages as subdirectories + +This is a fix for https://github.com/moy/Git-Mediawiki/issues/22 +The subdirectories option is enabled using -c remote.origin.subpageDirs=true +during the cloning and it is not recommended to be modified in or +removed from .git/config after the cloning. +--- + contrib/mw-to-git/git-remote-mediawiki.perl | 10 +++++++++- + 1 file changed, 9 insertions(+), 1 deletion(-) + +diff --git a/contrib/mw-to-git/git-remote-mediawiki.perl b/contrib/mw-to-git/git-remote-mediawiki.perl +index 8dd74a9..f3624be 100755 +--- a/contrib/mw-to-git/git-remote-mediawiki.perl ++++ b/contrib/mw-to-git/git-remote-mediawiki.perl +@@ -63,6 +63,11 @@ + my @tracked_categories = split(/[ \n]/, run_git("config --get-all remote.${remotename}.categories")); + chomp(@tracked_categories); + ++# Use subdirectories for subpages ++my $use_subpage_dirs = run_git("config --get --bool remote.${remotename}.subpageDirs"); ++chomp($use_subpage_dirs); ++$use_subpage_dirs = ($use_subpage_dirs eq 'true'); ++ + # Import media files on pull + my $import_media = run_git("config --get --bool remote.${remotename}.mediaimport"); + chomp($import_media); +@@ -689,6 +694,9 @@ sub fe_escape_path { + $path =~ s/\\/\\\\/g; + $path =~ s/"/\\"/g; + $path =~ s/\n/\\n/g; ++ if ($use_subpage_dirs) { ++ $path =~ s/%2F/\//g; ++ } + return qq("${path}"); + } + +@@ -927,7 +935,7 @@ sub mw_import_revids { + # If this is a revision of the media page for new version + # of a file do one common commit for both file and media page. + # Else do commit only for that page. +- print {*STDERR} "${n}/", scalar(@{$revision_ids}), ": Revision #$rev->{revid} of $commit{title}\n"; ++ print {*STDERR} "${n}/", scalar(@{$revision_ids}), ": Revision #$rev->{revid} of ", fe_escape_path($commit{title}), "\n"; + import_file_revision(\%commit, ($fetch_from == 1), $n_actual, \%mediafile); + } + diff --git a/dev-vcs/git/files/git-daemon-r1.initd b/dev-vcs/git/files/git-daemon-r1.initd new file mode 100644 index 000000000000..78e5444ed4db --- /dev/null +++ b/dev-vcs/git/files/git-daemon-r1.initd @@ -0,0 +1,13 @@ +#!/sbin/openrc-run +# Copyright 1999-2016 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 + +pidfile="/var/run/git-daemon.pid" +command="/usr/bin/git" +command_args="daemon ${GITDAEMON_OPTS}" +command_user="${GIT_USER:-nobody}:${GIT_GROUP:-nobody}" +start_stop_daemon_args="-e HOME= -e XDG_CONFIG_HOME= -b -m" + +depend() { + use logger +} diff --git a/dev-vcs/git/files/git-daemon-r2.initd b/dev-vcs/git/files/git-daemon-r2.initd new file mode 100644 index 000000000000..453fd608363f --- /dev/null +++ b/dev-vcs/git/files/git-daemon-r2.initd @@ -0,0 +1,14 @@ +#!/sbin/openrc-run +# Copyright 1999-2021 Gentoo Authors +# Distributed under the terms of the GNU General Public License v2 + +pidfile="/run/git-daemon.pid" +command="/usr/bin/git" +command_args="daemon ${GITDAEMON_OPTS}" +command_user="${GIT_USER:-nobody}:${GIT_GROUP:-nobody}" +start_stop_daemon_args="-e HOME= -e XDG_CONFIG_HOME=" +command_background="yes" + +depend() { + use logger +} diff --git a/dev-vcs/git/files/git-daemon.confd b/dev-vcs/git/files/git-daemon.confd new file mode 100644 index 000000000000..69b209ff18cc --- /dev/null +++ b/dev-vcs/git/files/git-daemon.confd @@ -0,0 +1,19 @@ +# conf.d file for git-daemon +# +# Please check man 1 git-daemon for more information about the options +# git-daemon accepts. You MUST edit this to include your repositories you wish +# to serve. +# +# Some of the meaningful options are: +# --syslog --- Enables syslog logging +# --verbose --- Enables verbose logging +# --export-all --- Exports all repositories +# --port=XXXX --- Starts in port XXXX instead of 9418 +# +GITDAEMON_OPTS="--syslog --base-path=/var/git" + +# To run an anonymous git safely, the following user should be able to only +# read your Git repositories. It should not be able to write to anywhere on +# your system, esp. not the repositories. +GIT_USER="nobody" +GIT_GROUP="nobody" diff --git a/dev-vcs/git/files/git-daemon.socket b/dev-vcs/git/files/git-daemon.socket new file mode 100644 index 000000000000..3dec01d21653 --- /dev/null +++ b/dev-vcs/git/files/git-daemon.socket @@ -0,0 +1,9 @@ +[Unit] +Description=Git Activation Socket + +[Socket] +ListenStream=9418 +Accept=true + +[Install] +WantedBy=sockets.target diff --git a/dev-vcs/git/files/git-daemon.xinetd b/dev-vcs/git/files/git-daemon.xinetd new file mode 100644 index 000000000000..02c938d4bd6c --- /dev/null +++ b/dev-vcs/git/files/git-daemon.xinetd @@ -0,0 +1,13 @@ +service git-daemon +{ + disable = yes + socket_type = stream + wait = no + user = nobody + type = UNLISTED + protocol = tcp + log_on_failure += USERID + port = 9418 + server = /usr/bin/git + server_args = daemon --inetd --syslog --export-all --base-path=/var/git +} diff --git a/dev-vcs/git/files/git-daemon_at-r1.service b/dev-vcs/git/files/git-daemon_at-r1.service new file mode 100644 index 000000000000..0a1bd14b16a3 --- /dev/null +++ b/dev-vcs/git/files/git-daemon_at-r1.service @@ -0,0 +1,12 @@ +[Unit] +Description=Git Repositories Server Daemon +Documentation=man:git-daemon(1) + +[Service] +User=nobody +Group=nobody +# Ignore non-zero exit status, access error makes git-daemon return them +ExecStart=-/usr/libexec/git-core/git-daemon --inetd --base-path=/var/git --verbose +StandardInput=socket +StandardOutput=inherit +StandardError=journal diff --git a/dev-vcs/git/git-2.53.0.ebuild b/dev-vcs/git/git-2.53.0.ebuild new file mode 100644 index 000000000000..220081c56c86 --- /dev/null +++ b/dev-vcs/git/git-2.53.0.ebuild @@ -0,0 +1,613 @@ +# Copyright 2021-2026 Liguros Authors +# Distributed under the terms of the GNU General Public License v2 +EAPI=8 + +GENTOO_DEPEND_ON_PERL=no +PYTHON_COMPAT=( python3_{13..14} ) + +inherit bash-completion-r1 optfeature perl-module plocale python-single-r1 systemd toolchain-funcs + +PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN" +MY_PV="${PV/_rc/.rc}" +MY_P="${PN}-${MY_PV}" + +DOC_VER="${MY_PV}" + +DESCRIPTION="Stupid content tracker: distributed VCS designed for speed and efficiency" +HOMEPAGE="https://www.git-scm.com/" +SRC_URI_SUFFIX="xz" +SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git" +[[ "${PV/rc}" != "${PV}" ]] && SRC_URI_KORG+='/testing' +SRC_URI=" + ${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX} + ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX} + doc? ( + ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX} + ) +" +[[ "${PV}" == *_rc* ]] || \ +KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~amd64-linux ~x86-linux ~arm64-macos ~ppc-macos ~x64-macos ~x64-solaris" + +LICENSE="GPL-2" +SLOT="0" +IUSE="+blksha1 +curl cgi doc keyring +gpg highlight +iconv mediawiki +nls +pcre perforce +perl +safe-directory selinux subversion tk +webdav xinetd cvs test" + +# Common to both DEPEND and RDEPEND +DEPEND=" + dev-libs/openssl:= + + sys-libs/zlib + curl? ( + net-misc/curl + webdav? ( dev-libs/expat ) + ) + keyring? ( + app-crypt/libsecret + dev-libs/glib:2 + ) + iconv? ( virtual/libiconv ) + pcre? ( dev-libs/libpcre2:= ) + perl? ( dev-lang/perl:=[-build(-)] ) + tk? ( dev-lang/tk:= ) +" +RDEPEND=" + ${DEPEND} + gpg? ( app-crypt/gnupg ) + perl? ( + dev-perl/Error + dev-perl/MailTools + dev-perl/Authen-SASL + >=virtual/perl-libnet-3.110.0-r4[ssl] + cgi? ( + dev-perl/CGI + highlight? ( app-text/highlight ) + ) + cvs? ( + >=dev-vcs/cvsps-2.1:0 + dev-perl/DBI + dev-perl/DBD-SQLite + ) + mediawiki? ( + dev-perl/DateTime-Format-ISO8601 + dev-perl/HTML-Tree + dev-perl/MediaWiki-API + ) + subversion? ( + dev-vcs/subversion[-dso(-),perl] + dev-perl/libwww-perl + dev-perl/TermReadKey + ) + ) + perforce? ( ${PYTHON_DEPS} ) + selinux? ( sec-policy/selinux-git ) +" + +# This is how info docs are created with Git: +# .txt/asciidoc --(asciidoc)---------> .xml/docbook +# .xml/docbook --(docbook2texi.pl)--> .texi +# .texi --(makeinfo)---------> .info +BDEPEND=" + doc? ( + app-text/asciidoc + app-text/docbook2X + app-text/xmlto + sys-apps/texinfo + ) + keyring? ( virtual/pkgconfig ) + nls? ( sys-devel/gettext ) + test? ( app-crypt/gnupg ) +" + +# Live ebuild builds man pages and HTML docs, additionally +if [[ ${PV} == *9999 ]]; then + BDEPEND+=" app-text/asciidoc" +fi + +SITEFILE="50${PN}-gentoo.el" +S="${WORKDIR}/${MY_P}" + +REQUIRED_USE=" + cgi? ( perl ) + cvs? ( perl ) + mediawiki? ( perl ) + perforce? ( ${PYTHON_REQUIRED_USE} ) + subversion? ( perl ) + webdav? ( curl ) +" + +RESTRICT="!test? ( test )" + +PATCHES=( + # Make submodule output quiet + "${FILESDIR}"/git-2.21.0-quiet-submodules-testcase.patch +) + +pkg_setup() { + if use subversion && has_version "dev-vcs/subversion[dso]" ; then + ewarn "Per Gentoo bugs #223747, #238586, when subversion is built" + ewarn "with USE=dso, there may be weird crashes in git-svn. You" + ewarn "have been warned!" + fi + + if use perforce ; then + python-single-r1_pkg_setup + fi +} + +# This is needed because for some obscure reasons future calls to make don't +# pick up these exports if we export them in src_unpack() +exportmakeopts() { + local extlibs myopts + + myopts=( + ASCIIDOC_NO_ROFF=YesPlease + + $(usex perl 'INSTALLDIRS=vendor NO_PERL_CPAN_FALLBACKS=YesPlease' NO_PERL=YesPlease) + + $(usev elibc_musl NO_REGEX=NeedsStartEnd) + $(usev !cvs NO_CVS=YesPlease) + $(usev !iconv NO_ICONV=YesPlease) + $(usev !nls NO_GETTEXT=YesPlease) + $(usev !perforce NO_PYTHON=YesPlease) + $(usev !subversion NO_SVN_TESTS=YesPlease) + $(usev !tk NO_TCLTK=YesPlease) + ) + + if use blksha1 ; then + myopts+=( BLK_SHA1=YesPlease ) + fi + + if use curl ; then + use webdav || myopts+=( NO_EXPAT=YesPlease ) + else + myopts+=( NO_CURL=YesPlease ) + fi + + # Broken assumptions because of static build system + myopts+=( + NO_FINK=YesPlease + NO_DARWIN_PORTS=YesPlease + INSTALL=install + TAR=tar + SHELL_PATH="${EPREFIX}/bin/sh" + SANE_TOOL_PATH= + OLD_ICONV= + NO_EXTERNAL_GREP= + ) + + # Can't define this to null, since the entire makefile depends on it + sed -i -e '/\/usr\/local/s/BASIC_/#BASIC_/' Makefile || die + + if use pcre; then + myopts+=( USE_LIBPCRE2=YesPlease ) + extlibs+=( -lpcre2-8 ) + fi + + if [[ ${CHOST} == *-solaris* ]]; then + myopts+=( + NEEDS_LIBICONV=YesPlease + HAVE_CLOCK_MONOTONIC=1 + ) + + if grep -Fq getdelim "${ESYSROOT}"/usr/include/stdio.h ; then + myopts+=( HAVE_GETDELIM=1 ) + fi + fi + + myopts+=( ASCIIDOC8=YesPlease ) + + export MY_MAKEOPTS="${myopts[@]}" + export EXTLIBS="${extlibs[@]}" +} + +src_unpack() { + if [[ ${PV} != *9999 ]] ; then + unpack ${MY_P}.tar.${SRC_URI_SUFFIX} + + cd "${S}" || die + unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX} + + if use doc ; then + pushd "${S}"/Documentation &>/dev/null || die + unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX} + popd &>/dev/null || die + fi + else + git-r3_src_unpack + fi + +} + +src_prepare() { + if ! use safe-directory ; then + # This patch neuters the "safe directory" detection. + # bugs #838271, #838223 + PATCHES+=( + "${FILESDIR}"/git-2.46.2-unsafe-directory.patch + ) + fi + + default + + if use prefix ; then + # bug #757309 + sed -i \ + -e 's:/usr/local/opt/gettext/:/do/not/look/elsewhere/:g' \ + -e 's:/opt/homebrew/:/do/not/look/elsewhere/:g' \ + config.mak.uname || die + fi + + sed -i \ + -e 's:^\(CFLAGS[[:space:]]*=\).*$:\1 $(OPTCFLAGS) -Wall:' \ + -e 's:^\(LDFLAGS[[:space:]]*=\).*$:\1 $(OPTLDFLAGS):' \ + -e 's:^\(CC[[:space:]]* =\).*$:\1$(OPTCC):' \ + -e 's:^\(AR[[:space:]]* =\).*$:\1$(OPTAR):' \ + -e "s:\(PYTHON_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \ + -e "s:\(PERL_PATH[[:space:]]\+=[[:space:]]\+\)\(.*\)$:\1${EPREFIX}\2:" \ + Makefile || die + + # Fix docbook2texi command + sed -r -i 's/DOCBOOK2X_TEXI[[:space:]]*=[[:space:]]*docbook2x-texi/DOCBOOK2X_TEXI = docbook2texi.pl/' \ + Documentation/Makefile || die +} + +git_emake() { + # bug #320647: PYTHON_PATH + local PYTHON_PATH="" + use perforce && PYTHON_PATH="${PYTHON}" + + local mymakeargs=( + ${MY_MAKEOPTS} + + prefix="${EPREFIX}"/usr + htmldir="${EPREFIX}"/usr/share/doc/${PF}/html + perllibdir="$(use perl && perl_get_raw_vendorlib)" + sysconfdir="${EPREFIX}"/etc + + CC="$(tc-getCC)" + CFLAGS="${CFLAGS}" + PKG_CONFIG="$(tc-getPKG_CONFIG)" + + # TODO: --verbose? + GIT_TEST_OPTS="--no-color" + + OPTAR="$(tc-getAR)" + OPTCC="$(tc-getCC)" + OPTCFLAGS="${CFLAGS}" + OPTLDFLAGS="${LDFLAGS}" + + CURL_CONFIG="${ESYSROOT}/usr/bin/curl-config" + CURL_CFLAGS="$($(tc-getPKG_CONFIG) --cflags libcurl)" + CURL_LDFLAGS="$($(tc-getPKG_CONFIG) --libs libcurl)" + + PERL_PATH="${EPREFIX}/usr/bin/perl" + PERL_MM_OPT="" + + PYTHON_PATH="${PYTHON_PATH}" + + V=1 + "$@" + ) + + emake "${mymakeargs[@]}" +} + +src_configure() { + exportmakeopts +} + +src_compile() { + git_emake + + if use perl && use cgi ; then + git_emake gitweb + fi + + if use perl ; then + git_emake -C contrib/credential/netrc + fi + + if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then + git_emake -C contrib/credential/osxkeychain + fi + + pushd Documentation &>/dev/null || die + if [[ ${PV} == *9999 ]] ; then + git_emake man + if use doc ; then + git_emake info html + fi + else + if use doc ; then + git_emake info + fi + fi + popd &>/dev/null || die + + if use keyring ; then + git_emake -C contrib/credential/libsecret + fi + + git_emake -C contrib/diff-highlight + + if use mediawiki ; then + git_emake -C contrib/mw-to-git + fi +} + +src_test() { + local disabled=( + # We make safe-directory optional + t0033-safe-directory.sh + ) + + local tests_cvs=( + t9200-git-cvsexportcommit.sh + t9400-git-cvsserver-server.sh + t9401-git-cvsserver-crlf.sh + t9402-git-cvsserver-refs.sh + t9600-cvsimport.sh + t9601-cvsimport-vendor-branch.sh + t9602-cvsimport-branches-tags.sh + t9603-cvsimport-patchsets.sh + t9604-cvsimport-timestamps.sh + ) + + local tests_perl=( + t3701-add-interactive.sh + t5502-quickfetch.sh + t5512-ls-remote.sh + t5520-pull.sh + t7106-reset-unborn-branch.sh + t7501-commit.sh + ) + # Bug #225601 - t0004 is not suitable for root perm + # Bug #219839 - t1004 is not suitable for root perm + # t0001-init.sh - check for init notices EPERM* fails + local tests_nonroot=( + t0001-init.sh + t0004-unwritable.sh + t0070-fundamental.sh + t1004-read-tree-m-u-wf.sh + t3700-add.sh + t7300-clean.sh + ) + # t9100 still fails with symlinks in SVN 1.7 + local test_svn=( t9100-git-svn-basic.sh ) + + # Unzip is used only for the testcase code, not by any normal parts of Git. + if ! has_version app-arch/unzip ; then + einfo "Disabling tar-tree tests" + disabled+=( t5000-tar-tree.sh ) + fi + + local cvs=0 + use cvs && let cvs=${cvs}+1 + if [[ ${EUID} -eq 0 ]] ; then + if [[ ${cvs} -eq 1 ]] ; then + ewarn "Skipping CVS tests because CVS does not work as root!" + ewarn "You should retest with FEATURES=userpriv!" + disabled+=( ${tests_cvs[@]} ) + fi + einfo "Skipping other tests that require being non-root" + disabled+=( ${tests_nonroot[@]} ) + else + if [[ ${cvs} -gt 0 ]] && has_version dev-vcs/cvs ; then + let cvs=${cvs}+1 + fi + + if [[ ${cvs} -gt 1 ]] && has_version "dev-vcs/cvs[server]" ; then + let cvs=${cvs}+1 + fi + + if [[ ${cvs} -lt 3 ]] ; then + einfo "Disabling CVS tests (needs dev-vcs/cvs[USE=server])" + disabled+=( ${tests_cvs[@]} ) + fi + fi + + if ! use perl ; then + einfo "Disabling tests that need Perl" + disabled+=( ${tests_perl[@]} ) + fi + + einfo "Disabling tests that fail with SVN 1.7" + disabled+=( ${test_svn[@]} ) + + # Reset all previously disabled tests + pushd t &>/dev/null || die + local i + for i in *.sh.DISABLED ; do + [[ -f "${i}" ]] && mv -f "${i}" "${i%.DISABLED}" + done + einfo "Disabled tests:" + for i in ${disabled[@]} ; do + if [[ -f "${i}" ]] ; then + mv -f "${i}" "${i}.DISABLED" && einfo "Disabled ${i}" + fi + done + + # Avoid the test system removing the results because we want them ourselves + sed -e '/^[[:space:]]*$(MAKE) clean/s,^,#,g' -i Makefile || die + + # Clean old results first, must always run + nonfatal git_emake clean + popd &>/dev/null || die + + # Now run the tests, keep going if we hit an error, and don't terminate on + # failure + local rc + # t0610-reftable-basics.sh uses $A + local -x A= + einfo "Start test run" + #MAKEOPTS=-j1 + nonfatal git_emake --keep-going test + rc=$? + + # Display nice results, now print the results + pushd t &>/dev/null || die + nonfatal git_emake aggregate-results + + # And bail if there was a problem + [[ ${rc} -eq 0 ]] || die "Tests failed. Please file a bug!" + + popd &>/dev/null || die + if use perl ; then + emake -C contrib/credential/netrc testverbose + fi +} + +src_install() { + git_emake DESTDIR="${D}" install + + if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then + dobin contrib/credential/osxkeychain/git-credential-osxkeychain + fi + + # Depending on the tarball and manual rebuild of the documentation, the + # manpages may exist in either OR both of these directories. + find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157] + find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157] + dodoc README* Documentation/{SubmittingPatches,CodingGuidelines} + use doc && dodir /usr/share/doc/${PF}/html + local d + for d in / /howto/ /technical/ ; do + docinto ${d} + dodoc Documentation${d}*.adoc + if use doc ; then + docinto ${d}/html + dodoc Documentation${d}*.html + fi + done + docinto / + # Upstream does not ship this pre-built :-( + use doc && doinfo Documentation/{git,gitman}.info + + newbashcomp contrib/completion/git-completion.bash ${PN} + bashcomp_alias git gitk + # Not really a bash-completion file (bug #477920) + # but still needed uncompressed (bug #507480) + insinto /usr/share/${PN} + doins contrib/completion/git-prompt.sh + + newbin contrib/fast-import/import-tars.perl import-tars + exeinto /usr/libexec/git-core/ + + if use mediawiki ; then + git_emake -C contrib/mw-to-git DESTDIR="${D}" install + fi + + # diff-highlight + dobin contrib/diff-highlight/diff-highlight + newdoc contrib/diff-highlight/README README.diff-highlight + + # git-jump + exeinto /usr/libexec/git-core/ + doexe contrib/git-jump/git-jump + newdoc contrib/git-jump/README git-jump.txt + + # git-contacts + exeinto /usr/libexec/git-core/ + doexe contrib/contacts/git-contacts + dodoc contrib/contacts/git-contacts.adoc + + if use keyring ; then + pushd contrib/credential/libsecret &>/dev/null || die + dobin git-credential-libsecret + popd &>/dev/null || die + fi + + dodir /usr/share/${PN}/contrib + # The following are excluded: + # completion - installed above + # diff-highlight - done above + # emacs - removed upstream + # examples - these are stuff that is not used in Git anymore actually + # git-jump - done above + # gitview - installed above + # p4import - excluded because fast-import has a better one + # patches - stuff the Git guys made to go upstream to other places + # persistent-https - TODO + # mw-to-git - TODO + # svnimport - use git-svn + # thunderbird-patch-inline - fixes thunderbird + local contrib_objects=( + buildsystems + fast-import + rerere-train.sh + stats + ) + local i + for i in "${contrib_objects[@]}" ; do + cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || die "Failed contrib ${i}" + done + + if use perl && use cgi ; then + # We used to install in /usr/share/${PN}/gitweb + # but upstream installs in /usr/share/gitweb + # so we will install a symlink and use their location for compat with other + # distros + dosym ../gitweb /usr/share/${PN}/gitweb + + # INSTALL discusses configuration issues, not just installation + docinto / + newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb + newdoc "${S}"/gitweb/README README.gitweb + + for d in "${ED}"/usr/lib{,64}/perl5/ ; do + if [[ -d "${d}" ]] ; then + find "${d}" -name .packlist -delete || die + fi + done + else + rm -rf "${ED}"/usr/share/gitweb + fi + + if use perl ; then + pushd contrib/credential/netrc &>/dev/null || die + dobin git-credential-netrc + popd &>/dev/null || die + fi + + if ! use subversion ; then + rm -f "${ED}"/usr/libexec/git-core/git-svn \ + "${ED}"/usr/share/man/man1/git-svn.1* + fi + + if use xinetd ; then + insinto /etc/xinetd.d + newins "${FILESDIR}"/git-daemon.xinetd git-daemon + fi + + if ! use prefix ; then + newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon + newconfd "${FILESDIR}"/git-daemon.confd git-daemon + systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" "git-daemon@.service" + systemd_dounit "${FILESDIR}/git-daemon.socket" + fi + + perl_delete_localpod + + # Remove disabled linguas + # we could remove sources in src_prepare, but install does not + # handle missing locale dir well + rm_loc() { + if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then + rm -r "${ED}/usr/share/locale/${1}" || die + fi + } + plocale_for_each_disabled_locale rm_loc +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] ; then + elog "Please read /usr/share/bash-completion/completions/git for Git bash command" + elog "completion." + elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt" + elog "Note that the prompt bash code is now in that separate script" + fi + + optfeature_header "Some scripts require additional dependencies:" + optfeature git-quiltimport dev-util/quilt + optfeature git-instaweb www-servers/lighttpd www-servers/apache www-servers/nginx +} diff --git a/dev-vcs/git/git-2.54.0.ebuild b/dev-vcs/git/git-2.54.0.ebuild new file mode 100644 index 000000000000..f5a3a6e91ad7 --- /dev/null +++ b/dev-vcs/git/git-2.54.0.ebuild @@ -0,0 +1,420 @@ +# Copyright 2021-2026 Liguros Authors +# Distributed under the terms of the GNU General Public License v2 +EAPI=8 + +GENTOO_DEPEND_ON_PERL=no + +# bug #329479: git-remote-testgit is not multiple-version aware +PYTHON_COMPAT=( python3_{13..14} ) +RUST_OPTIONAL=1 +inherit flag-o-matic toolchain-funcs perl-module shell-completion optfeature +inherit plocale python-single-r1 rust systemd meson + +PLOCALES="bg ca de es fr is it ko pt_PT ru sv vi zh_CN" + +MY_PV="${PV/_rc/.rc}" +MY_P="${PN}-${MY_PV}" + +DOC_VER="${MY_PV}" + +DESCRIPTION="Stupid content tracker: distributed VCS designed for speed and efficiency" +HOMEPAGE="https://www.git-scm.com/" + +SRC_URI_SUFFIX="xz" +SRC_URI_KORG="https://www.kernel.org/pub/software/scm/git" + +[[ ${PV/rc} != ${PV} ]] && SRC_URI_KORG+='/testing' + +SRC_URI="${SRC_URI_KORG}/${MY_P}.tar.${SRC_URI_SUFFIX}" +SRC_URI+=" ${SRC_URI_KORG}/${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX}" +SRC_URI+=" doc? ( ${SRC_URI_KORG}/${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX} )" + +if [[ ${PV} != *_rc* ]] ; then + KEYWORDS="~alpha ~amd64 ~arm ~arm64 ~hppa ~loong ~m68k ~mips ~ppc ~ppc64 ~riscv ~s390 ~sparc ~x86 ~arm64-macos ~x64-macos ~x64-solaris" +fi + +S="${WORKDIR}"/${MY_P} + +LICENSE="GPL-2" +SLOT="0" +IUSE="+curl cgi cvs doc keyring +gpg highlight +iconv +nls +pcre perforce +perl rust +safe-directory selinux subversion test tk +webdav xinetd" + +# Common to both DEPEND and RDEPEND +DEPEND=" + dev-libs/openssl:= + + virtual/zlib:= + curl? ( + net-misc/curl + webdav? ( dev-libs/expat ) + ) + keyring? ( + app-crypt/libsecret + dev-libs/glib:2 + ) + iconv? ( virtual/libiconv ) + pcre? ( dev-libs/libpcre2:= ) + perl? ( dev-lang/perl:=[-build(-)] ) + tk? ( dev-lang/tk:= ) +" +RDEPEND=" + ${DEPEND} + gpg? ( app-alternatives/gpg ) + perl? ( + dev-perl/Error + dev-perl/MailTools + dev-perl/Authen-SASL + >=virtual/perl-libnet-3.110.0-r4[ssl] + cgi? ( + dev-perl/CGI + highlight? ( app-text/highlight ) + ) + cvs? ( + >=dev-vcs/cvsps-2.1:0 + dev-perl/DBI + dev-perl/DBD-SQLite + ) + subversion? ( + dev-vcs/subversion[-dso(-),perl] + dev-perl/libwww-perl + dev-perl/TermReadKey + ) + ) + perforce? ( ${PYTHON_DEPS} ) + selinux? ( sec-policy/selinux-git ) +" + +# This is how info docs are created with Git: +# .txt/asciidoc --(asciidoc)---------> .xml/docbook +# .xml/docbook --(docbook2texi.pl)--> .texi +# .texi --(makeinfo)---------> .info +BDEPEND=" + doc? ( + app-text/asciidoc + app-text/docbook2X + app-text/xmlto + sys-apps/texinfo + ) + keyring? ( virtual/pkgconfig ) + nls? ( sys-devel/gettext ) + rust? ( ${RUST_DEPEND} ) + test? ( + app-arch/unzip + app-crypt/gnupg + dev-lang/perl + ) +" + +SITEFILE="50${PN}-gentoo.el" + +REQUIRED_USE=" + cgi? ( perl ) + cvs? ( perl ) + perforce? ( ${PYTHON_REQUIRED_USE} ) + subversion? ( perl ) + webdav? ( curl ) +" + +RESTRICT="!test? ( test )" + +PATCHES=( + "${FILESDIR}"/${PN}-2.48.1-macos-no-fsmonitor.patch + + # This patch isn't merged upstream but is kept in the ebuild by + # demand from developers. It's opt-in (needs a config option) + # and the documentation mentions that it is a Gentoo addition. + "${FILESDIR}"/${PN}-2.50.0-diff-implement-config.diff.renames-copies-harder.patch + + "${FILESDIR}"/${PN}-2.54.0-0001-rust-don-t-pass-quiet-to-cargo.patch + "${FILESDIR}"/${PN}-2.54.0-0002-rust-respect-CARGO-environment-variable.patch +) + +pkg_setup() { + if use subversion && has_version "dev-vcs/subversion[dso]" ; then + ewarn "Per Gentoo bugs #223747, #238586, when subversion is built" + ewarn "with USE=dso, there may be weird crashes in git-svn. You" + ewarn "have been warned!" + fi + + if use perforce ; then + python-single-r1_pkg_setup + fi + + if use rust ; then + rust_pkg_setup + fi +} + +src_unpack() { + unpack ${MY_P}.tar.${SRC_URI_SUFFIX} + + cd "${S}" || die + unpack ${PN}-manpages-${DOC_VER}.tar.${SRC_URI_SUFFIX} + + if use doc ; then + pushd "${S}"/Documentation &>/dev/null || die + unpack ${PN}-htmldocs-${DOC_VER}.tar.${SRC_URI_SUFFIX} + popd &>/dev/null || die + fi +} + +src_prepare() { + if ! use safe-directory ; then + # This patch neuters the "safe directory" detection. + # bugs #838271, #838223 + PATCHES+=( + "${FILESDIR}"/git-2.46.2-unsafe-directory.patch + ) + fi + + default +} + +src_configure() { + local contrib=( + completion + subtree + + $(usev perl 'contacts') + ) + local credential_helpers=( + $(usev keyring 'libsecret') + $(usev perl 'netrc') + ) + + # Needs macOS Frameworks that can't currently be built with GCC. + if [[ ${CHOST} == *-darwin* ]] && tc-is-clang ; then + credential_helpers+=( osxkeychain ) + fi + + local native_file="${T}"/meson.ini.local + cat >> ${native_file} <<-EOF || die + [binaries] + # We don't want to bake /usr/bin/sh from usrmerged systems into + # binaries. /bin/sh is required by POSIX. + sh='/bin/sh' + EOF + + local emesonargs=( + --native-file "${native_file}" + + $(meson_feature curl) + $(meson_feature cgi gitweb) + $(meson_feature webdav expat) + $(meson_feature tk gitk) + $(meson_feature tk git_gui) + $(meson_feature iconv) + $(meson_feature nls gettext) + $(meson_feature pcre pcre2) + $(meson_feature perl) + $(meson_feature perforce python) + $(meson_feature rust) + $(meson_use test tests) + + -Dcontrib=$(IFS=, ; echo "${contrib[*]}" ) + -Dcredential_helpers=$(IFS=, ; echo "${credential_helpers[*]}" ) + + -Dmacos_use_homebrew_gettext=false + -Dperl_cpan_fallback=false + # TODO: allow zlib-ng + -Dzlib_backend=zlib + ) + + [[ ${CHOST} == *-darwin* ]] && emesonargs+=( -Dfsmonitor=false ) + [[ ${CHOST} == *-solaris* ]] && append-flags -D__EXTENSIONS__ + + # For non-live, we use a downloaded docs tarball instead. + # Non-live ebuilds download the sources from a tarball which does not + # include a .git directory. Coccinelle assumes it exists and fails + # otherwise. + # + # Fixes https://bugs.gentoo.org/952004 + emesonargs+=( + -Dcoccinelle=disabled + ) + + meson_src_configure +} + +git_emake() { + local mymakeargs=( + prefix="${EPREFIX}"/usr + htmldir="${EPREFIX}"/usr/share/doc/${PF}/html + sysconfdir="${EPREFIX}"/etc + perllibdir="$(use perl && perl_get_raw_vendorlib)" + + CC="$(tc-getCC)" + CFLAGS="${CFLAGS}" + LDFLAGS="${LDFLAGS}" + PKG_CONFIG="$(tc-getPKG_CONFIG)" + OPTAR="$(tc-getAR)" + OPTCC="$(tc-getCC)" + OPTCFLAGS="${CFLAGS}" + OPTLDFLAGS="${LDFLAGS}" + + PERL_PATH="${EPREFIX}/usr/bin/perl" + PERL_MM_OPT="" + + V=1 + + "$@" + ) + + emake "${mymakeargs[@]}" +} + +src_compile() { + meson_src_compile + + if use doc ; then + # Workaround fragments that still use the Makefile and can't + # find the bits from Meson's out-of-source build + ln -s "${BUILD_DIR}"/Documentation/asciidoc.conf "${S}"/Documentation/asciidoc.conf || die + fi + + git_emake -C contrib/diff-highlight +} + +src_test() { + # t0610-reftable-basics.sh uses $A + local -x A= + + meson_src_test +} + +src_install() { + meson_src_install + + # Depending on the tarball and manual rebuild of the documentation, the + # manpages may exist in either OR both of these directories. + find man?/*.[157] >/dev/null 2>&1 && doman man?/*.[157] + find Documentation/*.[157] >/dev/null 2>&1 && doman Documentation/*.[157] + dodoc README* Documentation/{SubmittingPatches,CodingGuidelines} + + local d + for d in / /howto/ /technical/ ; do + docinto ${d} + dodoc Documentation${d}*.adoc + done + docinto / + + newbashcomp contrib/completion/git-completion.bash ${PN} + bashcomp_alias git gitk + newzshcomp contrib/completion/git-completion.zsh _${PN} + # Not really a bash-completion file (bug #477920) + # but still needed uncompressed (bug #507480) + insinto /usr/share/${PN} + doins contrib/completion/git-prompt.sh + + #dobin contrib/fast-import/git-p4 # Moved upstream + #dodoc contrib/fast-import/git-p4.txt # Moved upstream + newbin contrib/fast-import/import-tars.perl import-tars + + # diff-highlight + dobin contrib/diff-highlight/diff-highlight + newdoc contrib/diff-highlight/README README.diff-highlight + + # git-jump + exeinto /usr/libexec/git-core/ + doexe contrib/git-jump/git-jump + newdoc contrib/git-jump/README git-jump.txt + + dodir /usr/share/${PN}/contrib + # The following are excluded: + # completion - installed above + # diff-highlight - done above + # git-jump - done above + # gitview - installed above + # p4import - excluded because fast-import has a better one + # patches - stuff the Git guys made to go upstream to other places + # subtree - built seperately + # svnimport - use git-svn + # thunderbird-patch-inline - fixes thunderbird + local contrib_objects=( + buildsystems + fast-import + rerere-train.sh + stats + ) + local i + for i in "${contrib_objects[@]}" ; do + cp -rf "${S}"/contrib/${i} "${ED}"/usr/share/${PN}/contrib || die "Failed contrib ${i}" + done + + if use cgi ; then + # We used to install in /usr/share/${PN}/gitweb + # but upstream installs in /usr/share/gitweb + # so we will install a symlink and use their location for compat with other + # distros + dosym ../gitweb /usr/share/${PN}/gitweb + + # INSTALL discusses configuration issues, not just installation + docinto / + newdoc "${S}"/gitweb/INSTALL INSTALL.gitweb + newdoc "${S}"/gitweb/README README.gitweb + + for d in "${ED}"/usr/lib{,64}/perl5/ ; do + if [[ -d "${d}" ]] ; then + find "${d}" -name .packlist -delete || die + fi + done + else + rm -rf "${ED}"/usr/share/gitweb + fi + + if use perl ; then + dodir "$(perl_get_vendorlib)" + mv "${ED}"/usr/share/perl5/Git.pm "${ED}/$(perl_get_vendorlib)" || die + mv "${ED}"/usr/share/perl5/Git "${ED}/$(perl_get_vendorlib)" || die + fi + + if ! use subversion ; then + rm -f "${ED}"/usr/libexec/git-core/git-svn \ + "${ED}"/usr/share/man/man1/git-svn.1* + fi + + if use xinetd ; then + insinto /etc/xinetd.d + newins "${FILESDIR}"/git-daemon.xinetd git-daemon + fi + + if ! use prefix ; then + newinitd "${FILESDIR}"/git-daemon-r2.initd git-daemon + newconfd "${FILESDIR}"/git-daemon.confd git-daemon + systemd_newunit "${FILESDIR}/git-daemon_at-r1.service" "git-daemon@.service" + systemd_dounit "${FILESDIR}/git-daemon.socket" + fi + + perl_delete_localpod + + # Remove disabled linguas + # we could remove sources in src_prepare, but install does not + # handle missing locale dir well + rm_loc() { + if [[ -e "${ED}/usr/share/locale/${1}" ]] ; then + rm -r "${ED}/usr/share/locale/${1}" || die + fi + } + plocale_for_each_disabled_locale rm_loc +} + +pkg_postinst() { + if [[ -z ${REPLACING_VERSIONS} ]] ; then + elog "Please read /usr/share/bash-completion/completions/git for Git bash command" + elog "completion." + elog "Please read /usr/share/git/git-prompt.sh for Git bash prompt" + elog "Note that the prompt bash code is now in that separate script" + fi + + if has_version app-shells/zsh ; then + elog 'There are two competing zsh completions available for Git.' + elog 'One is from app-shells/zsh, the other from dev-vcs/git.' + elog 'To choose between them, order the entries of $fpath so that your' + elog 'desired completion is earlier in the list or symlink the relevant' + elog 'script into a personal override directory early on fpath.' + fi + + optfeature_header "Some scripts require additional dependencies:" + optfeature git-quiltimport dev-util/quilt + optfeature git-instaweb www-servers/lighttpd www-servers/apache www-servers/nginx +} diff --git a/dev-vcs/git/metadata.xml b/dev-vcs/git/metadata.xml new file mode 100644 index 000000000000..edd7d2515317 --- /dev/null +++ b/dev-vcs/git/metadata.xml @@ -0,0 +1,45 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "https://docs.baldeagleos.com/dtd/metadata.dtd"> +<pkgmetadata> + <maintainer type="project"> + <email>dev@liguros.net</email> + <name>Development</name> + </maintainer> + <maintainer type="person"> + <email>robbat2@gentoo.org</email> + <name>Robin H. Johnson</name> + </maintainer> + <longdescription lang="en"> + Git - Fast Version Control System. Official titled + "GIT - the stupid content tracker". + + Git is a popular version control system designed to handle very large + projects with speed and efficiency; it is used mainly for various open + source projects, most notably the Linux kernel. + + Git falls in the category of distributed source code management tools, + similar to e.g. GNU Arch or Monotone (or BitKeeper in the proprietary + world). Every Git working directory is a full-fledged repository with full + revision tracking capabilities, not dependent on network access or a central + server. + </longdescription> + <upstream> + <remote-id type="cpe">cpe:/a:git:git</remote-id> + </upstream> + <use> + <flag name="blksha1">Use the new optimized SHA1 implementation</flag> + <flag name="cgi">Install gitweb too</flag> + <flag name="curl">Support fetching and pushing (requires webdav too) over http:// and https:// protocols</flag> + <flag name="gpg">Pull in gnupg for signing -- without gnupg, attempts at signing will fail at runtime!</flag> + <flag name="highlight">GitWeb support for app-text/highlight</flag> + <flag name="mediawiki">Support pulling and pushing from MediaWiki</flag> + <flag name="mediawiki-experimental">Add experimental patches for improved MediaWiki support</flag> + <flag name="safe-directory">Respect the safe.directory setting</flag> + <flag name="perforce">Add support for Perforce version control system (requires manual installation of Perforce client)</flag> + <flag name="ppcsha1">Make use of a bundled routine that is optimized for the PPC arch</flag> + <flag name="subversion">Include git-svn for <pkg>dev-vcs/subversion</pkg> support</flag> + <flag name="tk">Include the 'gitk' and 'git gui' tools</flag> + <flag name="webdav">Adds support for push'ing to HTTP/HTTPS repositories via DAV</flag> + </use> + <origin>baldeagleos-repo</origin> +</pkgmetadata> |
