diff --git a/git-infinite-loop.patch b/git-infinite-loop.patch new file mode 100644 index 0000000..0eae28f --- /dev/null +++ b/git-infinite-loop.patch @@ -0,0 +1,39 @@ +diff --git a/refs.c b/refs.c +index 67d6745..ddb9a77 100644 +--- a/refs.c ++++ b/refs.c +@@ -1422,6 +1422,7 @@ static struct ref_dir *get_loose_refs(struct ref_cache *refs) + /* We allow "recursive" symbolic refs. Only within reason, though */ + #define MAXDEPTH 5 + #define MAXREFLEN (1024) ++#define MAXRETRIES 5 + + /* + * Called by resolve_gitlink_ref_recursive() after it failed to read +@@ -1576,6 +1577,7 @@ const char *resolve_ref_unsafe(const char *refname, int resolve_flags, unsigned + struct stat st; + char *buf; + int fd; ++ int retries = 0; + + if (--depth < 0) { + errno = ELOOP; +@@ -1612,7 +1614,8 @@ const char *resolve_ref_unsafe(const char *refname, int resolve_flags, unsigned + if (S_ISLNK(st.st_mode)) { + len = readlink(path, buffer, sizeof(buffer)-1); + if (len < 0) { +- if (errno == ENOENT || errno == EINVAL) ++ if ((errno == ENOENT || errno == EINVAL) && ++ retries++ < MAXRETRIES) + /* inconsistent with lstat; retry */ + goto stat_ref; + else +@@ -1645,7 +1648,7 @@ const char *resolve_ref_unsafe(const char *refname, int resolve_flags, unsigned + */ + fd = open(path, O_RDONLY); + if (fd < 0) { +- if (errno == ENOENT) ++ if (errno == ENOENT && retries++ < MAXRETRIES) + /* inconsistent with lstat; retry */ + goto stat_ref; + else diff --git a/git.spec b/git.spec index af04add..78452e4 100644 --- a/git.spec +++ b/git.spec @@ -44,7 +44,7 @@ Name: git Version: 2.4.4 -Release: 1%{?dist} +Release: 2%{?dist} Summary: Fast Version Control System License: GPLv2 Group: Development/Tools @@ -64,6 +64,10 @@ Patch0: git-1.8-gitweb-home-link.patch Patch1: git-cvsimport-Ignore-cvsps-2.2b1-Branches-output.patch # https://bugzilla.redhat.com/600411 Patch3: git-1.7-el5-emacs-support.patch +# https://bugzilla.redhat.com/show_bug.cgi?id=1204193 +# http://thread.gmane.org/gmane.comp.version-control.git/266145 +# could be removed when update/branch of Michael will be merged in upstream +Patch4: git-infinite-loop.patch BuildRoot: %{_tmppath}/%{name}-%{version}-%{release}-root-%(%{__id_u} -n) @@ -206,6 +210,7 @@ Requires: git = %{version}-%{release} 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 @@ -315,6 +320,7 @@ Requires: emacs-git = %{version}-%{release} %if %{emacs_old} %patch3 -p1 %endif +%patch4 -p1 %if %{use_prebuilt_docs} mkdir -p prebuilt_docs/{html,man} @@ -654,6 +660,12 @@ rm -rf %{buildroot} # No files for you! %changelog +* Mon Jun 22 2015 Petr Stodulka <pstodulk@gmail.com> - 2.4.4-2 +- git-svn - added requires for perl-Digest-MD5 (#1218176) +- solve troubles with infinite loop due to broken symlink (probably + shouldn't be problem here, but it's reproducible manually) + (#1204193) + * Tue Jun 16 2015 Jon Ciesla <limburgher@gmail.com> - 2.4.4-1 - Update to 2.4.4.