From marat at slonopotamus.org Tue Sep 9 12:19:04 2014 From: marat at slonopotamus.org (Marat Radchenko) Date: Tue, 9 Sep 2014 15:19:04 +0400 Subject: [ANNOUNCE] git-as-svn: subversion frontend server for git repository Message-ID: <20140909111903.GA13137@seldon> Some time ago I complained [1] about troubles using Git on a project with high ratio of non-programmers. Since then, a conclusion was made: Git is too complex. While Git provides many nice advanced stuff, its simplest workflow isn't simple enough. So we examined other options: * Splitting project in two repos (Git + SVN). It was thought to be the worst idea because we lost commit atomicity * Use GitHub SVN integration [2]. Rejected due to security considerations: our closed-source project isn't allowed to be hosted outside. * Use GitHub Enterprise: rejected due to pricing * Use SubGit [3]: rejected because of its architecture. Then, a lost'n'forgotten git_svn_server [4] was found. After playing with it, we found out that its approach can work, though several decisions (Python and extensive forking of `git`) made it very slow. So we thought "we're programmers, after all". And that's when *git-as-svn* [5] was born. It is a daemon that sits on top of Git repository and talks svn:// protocol. Features supported: * checkout/update * log * blame * commit (!) * rename detection (though a bit slow yet) * svn:eol-style * Git pre-receive hooks * simple or LDAP authentication * partial checkout * sparse working copy (svn --depth/--set-depth) * git submodules Current limitations: * Only a single Git branch from a single repository * Needs at least one commit in Git * Parses whole history on startup and doesn't cache it anywhere * You must not do 'inverted merges'. Old HEAD must be reachable from new HEAD by first-parent traversal. [1]: http://marc.info/?l=git&m=139866660018802 [2]: https://help.github.com/articles/support-for-subversion-clients [3]: http://subgit.com/ [4]: http://git.q42.co.uk/git_svn_server.git [5]: https://github.com/bozaro/git-as-svn/ -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From gitster at pobox.com Fri Sep 19 23:53:45 2014 From: gitster at pobox.com (Junio C Hamano) Date: Fri, 19 Sep 2014 15:53:45 -0700 Subject: [ANNOUNCE] Git v2.1.1 Message-ID: The latest maintenance release Git v2.1.1 is now available at the usual places. The tarballs are found at: https://www.kernel.org/pub/software/scm/git/ The following public repositories all have a copy of the 'v2.1.1' tag and the 'maint' branch that the tag points at: url = https://kernel.googlesource.com/pub/scm/git/git url = git://repo.or.cz/alt-git.git url = https://code.google.com/p/git-core/ url = git://git.sourceforge.jp/gitroot/git-core/git.git url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core url = https://github.com/gitster/git Git v2.1.1 Release Notes ======================== * Git 2.0 had a regression where "git fetch" into a shallowly cloned repository from a repository with bitmap object index enabled did not work correctly. This has been corrected. * Git 2.0 had a regression which broke (rarely used) "git diff-tree -t". This has been corrected. * "git log --pretty/format=" with an empty format string did not mean the more obvious "No output whatsoever" but "Use default format", which was counterintuitive. Now it means "nothing shown for the log message part". * "git -c section.var command" and "git -c section.var= command" should pass the configuration differently (the former should be a boolean true, the latter should be an empty string), but they didn't work that way. Now it does. * Applying a patch not generated by Git in a subdirectory used to check the whitespace breakage using the attributes for incorrect paths. Also whitespace checks were performed even for paths excluded via "git apply --exclude=" mechanism. * "git bundle create" with date-range specification were meant to exclude tags outside the range, but it did not work correctly. * "git add x" where x that used to be a directory has become a symbolic link to a directory misbehaved. * The prompt script checked $GIT_DIR/ref/stash file to see if there is a stash, which was a no-no. * "git checkout -m" did not switch to another branch while carrying the local changes forward when a path was deleted from the index. * With sufficiently long refnames, fast-import could have overflown an on-stack buffer. * After "pack-refs --prune" packed refs at the top-level, it failed to prune them. * "git gc --auto" triggered from "git fetch --quiet" was not quiet. -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html From gitster at pobox.com Tue Sep 30 21:22:59 2014 From: gitster at pobox.com (Junio C Hamano) Date: Tue, 30 Sep 2014 13:22:59 -0700 Subject: [ANNOUNCE] Git v2.1.2 Message-ID: The latest maintenance release Git v2.1.2 is now available at the usual places. With this, v2.1.x has all the important fixes that have been already applied to the 'master' front for the next feature release. It also contains some updates to German translation. The tarballs are found at: https://www.kernel.org/pub/software/scm/git/ The following public repositories all have a copy of the 'v2.1.2' tag and the 'maint' branch that the tag points at: url = https://kernel.googlesource.com/pub/scm/git/git url = git://repo.or.cz/alt-git.git url = https://code.google.com/p/git-core/ url = git://git.sourceforge.jp/gitroot/git-core/git.git url = git://git-core.git.sourceforge.net/gitroot/git-core/git-core url = https://github.com/gitster/git Git v2.1.2 Release Notes ======================== * "git push" over HTTP transport had an artificial limit on number of refs that can be pushed imposed by the command line length. * When receiving an invalid pack stream that records the same object twice, multiple threads got confused due to a race. * An attempt to remove the entire tree in the "git fast-import" input stream caused it to misbehave. * Reachability check (used in "git prune" and friends) did not add a detached HEAD as a starting point to traverse objects still in use. * "git config --add section.var val" used to lose existing section.var whose value was an empty string. * "git fsck" failed to report that it found corrupt objects via its exit status in some cases. ---------------------------------------------------------------- Changes since v2.1.1 are as follows: Jeff King (5): send-pack: take refspecs over stdin index-pack: fix race condition with duplicate bases fsck: exit with non-zero status upon error from fsck_obj() config: avoid a funny sentinel value "a^" fsck: return non-zero status on missing ref tips Junio C Hamano (1): Git 2.1.2 Max Kirillov (1): reachable.c: add HEAD to reachability starting commits Maxim Bublis (2): t9300: test filedelete command fast-import: fix segfault in store_tree() Phillip Sz (2): l10n: de.po: change Email to E-Mail l10n: de.po: use comma before "um" Ralf Thielow (1): po/TEAMS: add new member to German translation team Sergey Organov (2): Documentation/git-rebase.txt: -f forces a rebase that would otherwise be a no-op Documentation/git-rebase.txt: must be given to specify Tanay Abhra (1): make config --add behave correctly for empty and NULL values -- To unsubscribe from this list: send the line "unsubscribe git" in the body of a message to majordomo at vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html