threads / discuss / 16444

Hello All and Seeking Information

Subject: Hello All and Seeking Information

## tl;dr

5 messages between Nov 24, 2008 and Nov 25, 2008.

replies: 4people: 5as markdown or json

Tim Visher· Nov 24, 2008, 16:28 UTC · lore
Hello Everyone,

I'm new to the list so I figured I'd introduce myself instead of just wall-flowering... "Hello"... :)

Anyway, I really like a lot of the concepts found in Git and the reported power and flexibility of it are very intriguing. However, there are some issues that I can't wrap my head around, such as how you can guarantee that all developers are working on the same code-base without a central repo. I would classify a lot of my issues as paradigm rather than technically related. I understand a lot of Git's underpinnings and the basic usage of it, I just can't wrap my head around the higher-order parts of it.

I've done some Googling and I can't find a good 'Introduction to Distributed SCM Concepts for Centralized SCM Developers' article yet. Ideally, this would be an article all about the high-level thought processes that go into utilizing Distributed SCM in a team environment where having a single canonical representation of your project that all developers are working off of is important.

Anyway, looking forward to participating.

P.S. Anyone want to tell me why the Git Mailing List was set-up monolithically rather than the typical git-dev, git-user, git-admin, git-x etc.? I don't plan on hacking on Git so having the Dev mail in the list is just noise for me. I'm sure other people think that too. Just wondering.

-- 
In Christ,

Timmy V.

http://burningones.com/
http://five.sentenc.es/ - Spend less time on e-mail
Bruce Stephens· Nov 24, 2008, 16:35 UTC · re: Tim Visher · lore

Re: Hello All and Seeking Information

"Tim Visher" <tim.visher@gmail.com> writes:
[...]
> However, there are some issues that I can't wrap my head around,
> such as how you can guarantee that all developers are working on the
> same code-base without a central repo.
You can't.  That's the point.

If developers wish to use a central repository and always to work based on that, then they can. But the tool doesn't enforce that. <http://koweycode.blogspot.com/2008/11/iterative-commiting.html> describes a common (IME) benefit.

[...]
Christian MICHON· Nov 24, 2008, 16:39 UTC · re: Tim Visher · lore

Re: Hello All and Seeking Information

On Mon, Nov 24, 2008 at 5:28 PM, Tim Visher <tim.visher@gmail.com> wrote:
Show 21 quoted lines
> Hello Everyone,
>
> I'm new to the list so I figured I'd introduce myself instead of just
> wall-flowering... "Hello"... :)
>
> Anyway, I really like a lot of the concepts found in Git and the
> reported power and flexibility of it are very intriguing.  However,
> there are some issues that I can't wrap my head around, such as how
> you can guarantee that all developers are working on the same
> code-base without a central repo.  I would classify a lot of my issues
> as paradigm rather than technically related. I understand a lot of
> Git's underpinnings and the basic usage of it, I just can't wrap my
> head around the higher-order parts of it.
>
> I've done some Googling and I can't find a good 'Introduction to
> Distributed SCM Concepts for Centralized SCM Developers' article yet.
> Ideally, this would be an article all about the high-level thought
> processes that go into utilizing Distributed SCM in a team environment
> where having a single canonical representation of your project that
> all developers are working off of is important.
>
http://git.or.cz/gitwiki/LinusTalk200705Transcript
but the video is obviously more fun
http://www.youtube.com/watch?v=4XpnKHJAok8
-- 
Christian
--
http://detaolb.sourceforge.net/, a linux distribution for Qemu with Git inside !
Jakub Narebski· Nov 24, 2008, 18:22 UTC · re: Tim Visher · lore

Re: Hello All and Seeking Information

"Tim Visher" <tim.visher@gmail.com> writes:
Show 13 quoted lines
> Hello Everyone,
> 
> I'm new to the list so I figured I'd introduce myself instead of just
> wall-flowering... "Hello"... :)
> 
> Anyway, I really like a lot of the concepts found in Git and the
> reported power and flexibility of it are very intriguing.  However,
> there are some issues that I can't wrap my head around, such as how
> you can guarantee that all developers are working on the same
> code-base without a central repo.  I would classify a lot of my issues
> as paradigm rather than technically related. I understand a lot of
> Git's underpinnings and the basic usage of it, I just can't wrap my
> head around the higher-order parts of it.

The idea behind Git repository format is content adressed filesystem, which if I remember correctly was taken from Monotone (well, not addressed by actual content, but SHA-1 cryptographic hash of content+type). So if there is 134b8687c59e65ce06562ffb0e8be63ab7aa618b object in some repository, it is the same object in all repositories, even if it was created independently. That is one thing.

The other thing is that typical workflow calls for downloading changes (fetching in git jargon) from some 'upstream' repository, the official repository (one of official repositories) with code you are supposed to base your changes upon.

Also easy to create branches, and very good support for merging (and rebasing) makes it possible and easy to join (merge) lines of development done independently from some older point of history. So that even if you are not working on the same code-base I can incorporate your changes, and you can incorporate mine.

Show 7 quoted lines
> 
> I've done some Googling and I can't find a good 'Introduction to
> Distributed SCM Concepts for Centralized SCM Developers' article yet.
> Ideally, this would be an article all about the high-level thought
> processes that go into utilizing Distributed SCM in a team environment
> where having a single canonical representation of your project that
> all developers are working off of is important.

See http://git.or.cz/gitwiki/GitDocumentation (and also main page of this git wiki, Documentation mentioned on git homepage (http://git.or.cz) including "Git User's Manual", and "The Git Community Book" at http://book.git-scm.com

Show 5 quoted lines
> P.S. Anyone want to tell me why the Git Mailing List was set-up
> monolithically rather than the typical git-dev, git-user, git-admin,
> git-x etc.?  I don't plan on hacking on Git so having the Dev mail in
> the list is just noise for me.  I'm sure other people think that too.
> Just wondering.

Because this Git is not so large project, and traffic on git mailing list is not so large to support split? IIRC there was "Git for Human Beings" aka git-users Google Group, but it doesn't seem to be there any more. Also having common mailing list allow for better contact between developers and git users (which hopefully would allow us to avoid comon pitfalls with 'developers for developers' approach).

-- 
Jakub Narebski
Poland
ShadeHawk on #git
Pete Harlan· Nov 25, 2008, 07:57 UTC · re: Tim Visher · lore

Re: Hello All and Seeking Information

Tim Visher wrote:
> there are some issues that I can't wrap my head around, such as how
> you can guarantee that all developers are working on the same
> code-base without a central repo.

You can have a central repo that represents the official lines of development (branches, but "official" branches), and each developer has local copies of those branches so they can compare their own work against them.

If you don't have a central repo, then the developers can keep local copies of other developers' branches when they're interested in them, and compare their work against those.

Using the git project as an example, when you clone from git://git.kernel.org/pub/scm/git/git.git you will find "remote branches" origin/master, origin/maint, etc. They're stored locally in your repo; the name "remote" only refers to the fact that at one time (when you last cloned or fetched) they corresponded to branches in the origin repo. You can list your copies of these branches with "git branch -r". You can freshen them to agree with the origin with "git fetch origin".

Your local branches ("local" referring to the fact that they exist _only_ locally), listed by "git branch", are what you develop on.

After you do "git fetch", you can compare your local branches against your copies of the remote branches to see if the remote repo has new work you haven't yet incorporated into your local branches. You can also compare against them to see if you have work they don't.

So each developer can compare what they have against what others have, and keep things in sync as much as they wish to (and no more), fairly easily.

--Pete

← back to recent threads