Improving Git workflow

Felipe Contreras felipe.contreras at gmail.com
Fri Oct 11 01:28:05 CEST 2013


On Thu, Oct 10, 2013 at 5:53 PM, Jannis Pohlmann <jannis at xfce.org> wrote:
> On Wed, 9 Oct 2013 19:25:17 -0500
> Felipe Contreras <felipe.contreras at gmail.com> wrote:

> I might be confusing things here but didn't your ... output still
> include some commits that are actually in both branches, like the two
> examples I gave at the bottom?
>
> * 1965297 Use G_ENABLE_DEBUG to set fatal messages.
> * 31f9236 Actions: Fix logic of session saving (bug #8857).

Yes, because from Git's point of view those are to separate independent commits.

However, you can tell Git to do a comparison and remove those with
--right-only or --left-only.

> Hmm, gitk is something I have never seriously used because the
> command line tools provide all the information I personally need.

Yes, they provide all the information, but you cannot navigate it with a mouse.

> Your "worrying" output included those two commits and your mail was
> suggesting that xfce-4.10 is "not properly maintained" because that
> list of commits wasn't cherry-picked in xfce-4.10. I realise you
> probably didn't mean it like that. Perhaps picking 1-2 example commits
> from that list stating which haven't been cherry-picked would've made
> things more clear.

Like this:
Tasklist: Show urgent windows from other workspaces (bug #5167).

I looked again at the list of actual changes in 'master', and the
situation is not as bad as I thought, but I still think the repository
could be organized better.

>> Yes, but one convention makes sense, while the other has redundant
>> information.
>
> One thing that I personally don't like about branches "4.10" versus
> tags "v4.10.0" is that their names are so similar and you can easily
> confuse the two when checking out branches, tags etc.

That's why I use a branch named 'stable'.

> With "xfce-x.y" (global Xfce branch name) and
> "xfce4-panel-x.y.z" (component release tag) there's a very clear
> separation of the two.

I don't see what is so clear about those two, to me it's the same as
foo-4.10 vs. foo2-4.10.0.

> I think we've occasionally worked on personal branches with multiple
> people. GNOME / GTK / GLib is an example of a big project where there
> numerous work-in-progress branches, some of which are personal (i.e.
> have a username in them). I'm not following what they do closely this
> days but that seems to work fine for them.

I wouldn't use GNOME as an example of a project that uses Git effectively.

> One thing to perhaps clarify is that Xfce is not a big project compared
> to something like Git or Linux. With ~1-3 people maintaining most of
> the core components being able to only work on a few things in
> parallel, how many branches do you really expect?

And with that mentality it will always remain a small project.

> I count 15 for xfce4-panel, one of the most actively maintained
> components. Most components average around that number with about 2-3
> different users having personal branches.
>
> Even 50 branches in our repositories would scale fine. Git refs are so
> lightweight, as you should know from working on Git. Would having 2-3
> different repositories for each component make things simpler? I
> personally doubt it.

It's not a matter of performance. Git can handle thousands of branches
just fine.

I ask you again, why do you think the Git project only has five
branches, if branches are so lightweight, and they know that,
shouldn't they be using dozens of them? The answer is that they do use
dozens of them, but not on the main repository, because that would
pollute all the other repositories.

-- 
Felipe Contreras


More information about the Xfce4-dev mailing list