couchdb-commits mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Apache Wiki <>
Subject [Couchdb Wiki] Update of "Git_At_Apache_Guide" by MarkStruberg
Date Fri, 18 Nov 2011 19:30:55 GMT
Dear Wiki user,

You have subscribed to a wiki page or wiki category on "Couchdb Wiki" for change notification.

The "Git_At_Apache_Guide" page has been changed by MarkStruberg:

  For understanding the setup of our GIT repositories better, we have to understand the difference
in the mechanics of GIT compared to what we had available before at the ASF.
  ||<tablestyle="width: 903px; height: 203px;"> ||SVN||GIT||
  ||<tablestyle="width: 903px; height: 203px;">Content||SVN handles the content on a
per-file basis. Each file is basically versioned on it's own and has it's own history. Moving
a file with svn mv will preserve this history. Just copying the file will not!||GIT treats
all the files in the repository as a big union. All the commits basically form a tree of diffs
which get applied to the initially empty project directory. There is no 'native history' on
a file basis because of that. For producing a git-log or git-blame, GIT needs to walk through
all the commit tree and check whether the given file is involved. Otoh git can not only automatically
track rename-files, but also perfectly tracks if you move a method from one class to another!||
  ||Security||Handled by SVN itself. It's perfectly possible to have different directories
and files in a SVN repo which have different security rules applied. ||GIT has no own security.
It solely relies on the underlying transport/filesystem. It's imo not possible to have ||
  ||Branches||SVN creates an own directory per branch in ./branches/{branchname}/. The main
content is always in ./trunk/||GIT treats branches more like the way CVS did. When checking
out a branch, the directory remains the same, only the content will get 'switched'. Each branch
is technically equal. It is NOT possible to only do 'partial' branches (on a partly tree of
the project), instead a branch is ''__always__'' in the whole repository!||

View raw message