github jelmer/dulwich dulwich-1.2.15

5 hours ago
  • Detect delta cycles in Pack.resolve_object: a crafted pack with REF_DELTA objects that name each other sent get_raw into an unbounded loop. Such chains now raise DeltaCycle.
  • Fix porcelain.clean when the target directory and the repository path are spelled differently, such as via a relative path or a symlink. (Jelmer Vernooij)
  • Memoize tag peeling on the object store, so refs sharing an annotated tag chain no longer re-walk it once per ref. show_ref --dereference and the ref advertisement were quadratic. (Jelmer Vernooij, #2406)
  • Give a .gitignore in a subdirectory precedence over one closer to the root, matching git. A negation in a deeper file no longer loses to a rule at the root, and a nested negation no longer re-includes a path whose parent directory stays excluded. (Jelmer Vernooij, #2399)
  • Reject reftable tables.list entries that contain a path separator or are absolute, so a hostile repository cannot make a ref lookup open a file outside the reftable directory. (netliomax25-code)
  • Support dulwich commit -C/--reuse-message and -c/--reedit-message to reuse a commit's message, author and author date, optionally editing the message. The committer and new commit ancestry remain independent. (eunwoo song, #1845)
  • List local branches for bare dulwich branch and standalone dulwich branch --list [pattern]. Listing empty repositories or patterns with no matches succeeds without changing refs. (be-student, #1847)
  • Add dulwich commit --author="Name <email>" to override the author of a new or amended commit. (kudala-bharani, #1845)
  • Set branch.<name>.remote and branch.<name>.merge for the branch checked out by a clone, so that a subsequent git pull with no arguments has tracking information. (Jelmer Vernooij, #2376)
  • Keep relative paths relative in SSHGitClient.get_url, emitting git's ssh://host/~/path form. Cloning from an scp-style URL like user@host:git/repo.git previously stored ssh://user@host/git/repo.git as the remote URL, which points at a different repository. (Jelmer Vernooij, #2375)
  • Name a symlink by its own path in porcelain.path_to_tree_path, rather than by the path of its target. porcelain.status listed a tracked symlink as untracked whenever the file it pointed at was itself untracked or missing, so a modified symlink was reported twice. (Jerry Xiao)
  • Ignore gitignore lines that carry no pattern, such as a bare ! or /. A bare ! previously re-included a directory that an earlier pattern in the same file had ignored. (Jelmer Vernooij, #2398)
  • Avoid quadratic cost in PktLineParser.parse, which resliced its remaining buffer once per pkt-line. (Jelmer Vernooij, #2408)

Don't miss a new dulwich release

NewReleases is sending notifications on new releases.