[Cialug] git in structured environment

Colin Burnett cmlburnett at gmail.com
Wed Jul 9 17:11:09 CDT 2008


On Wed, Jul 9, 2008 at 4:47 PM, Lathrop Preston <lathrop at prestonfam.org> wrote:
> I am sorry. I did not realize that I as being unclear in my comments.
>
> To me a working copy is always checked out/updated from the repository, not
> from multiple other locations
>
> in other words
> each user will perform commits to the repository as is normal. resolving any
> conflicts that might arise at that time.
> on the backup server there is a job that grabs the most recent revision of
> any updated files right before the backup is performed
>
> Some of this might be a difference in how git works compared to how other
> source control systems (ie CVS, SVN, SourceSafe [shudder])
> as I said in my first post I might have been missing something specific to
> the situation.
>
> Laith

I love internet communication.  :)  It seems to me that you have a
misunderstanding in how git works (or complete absence of
understanding?).

A git repository consists of a local directory.  Period.  No server
like CVS, SVN, etc.  A git repository contains the full repository
(commits, messages, tags,... everything) inside the .git directory of
the repo.  (If I have a project in "/foo/" then all of the repository
is stored in "/foo/.git/".)  You share commits with other people by
pushing or pulling to another git repository.  Therein lies the
problem with trying to do a centralized storage because there is no
server: everyone is a client.  (In a sense it is like bittorrent in
that there is no server, only seeds...if that analogy helps.)

git has three levels of storage.  The first is the committed data.
The second is your staging area.  The third exists as files on the
disk that you edit.  You push changes to the staging area by `git add`
then you commit your staging area to the repo with `git commit`.  From
there you `git push` to another repo to push your changes into that
repo.  Alternatively that repo would pull your changes from your repo
to their's.  No particular repository is "the server" because you can
clone it as many times as you want and develop completely
independently of each other.

In short: it's fundamentally different from CVS or any CVS derivative.
 Hit up google video for "git tech talk linus" for the Tech Talk Linus
did about it.


Colin


More information about the Cialug mailing list