Consistent approaches to git documentation for site builders

Events happening in the community are now at Drupal community events on www.drupal.org.
owen barton's picture

I have been reviewing the various documentation (http://drupal.org/node/803746) and blog posts oriented towards site builders on this topic over the last few days, and it seems there are many very different recommendations a approaches to building sites with git. There is an opportunity here to shape some best practices that will both make everyone's lives easier in the long run, but also encourage contribution back to the community as a standard part of building any Drupal site.

Many of the currently documented approaches seem to be in the "download tarball, commit" paradigm, presumably because historically source code was only available from tarballs (or CVS). This is a fine approach of course, but given that contrib will (by the end of phase 1 implementation) be available in git directly, it seems like a more git oriented approach would be preferable - at least for advanced users.

For example, using git submodules seems to fit nicely into gits "everything is a branch" mindset, and would allow for very easy production/usage of patches on projects (perhaps even pushing/pulling from issue branches directly in phase 3), as well as making upgrades more streamlined, and offering more detailed tracking of changes (you can see your own branch changes inserted in between the maintainers changes), as well as making it easy to do things such as share a branched contrib between multiple projects. Of course submodules do come with some gotchas, but for the most part these seem to be quite well understood and (to me at least) worth the effort.

I am far from being a git expert, but below are some (rough) results of some experimentation yesterday.

# Start site
git clone git://git.drupalcode.org/projects/drupal.git
git checkout -b stablesite 6.16

# Add a module
git submodule add git://git.drupalcode.org/project/views.git sites/all/modules/views
cd sites/all/modules/views/
git checkout 6.x-2.10
# (or you can skip the above step if you want to run off head/branch)
cd ../../../..
git commit

# Upgrade a module
cd sites/all/modules/views/
git checkout 6.x-2.11
# (alternatively git merge if we have patched and want to keep our changes, or git reset --hard if we want to return to a clean checkout)
cd ../../../..
git commit -a

# Remove a module
git rm --cached sites/all/modules/views

# Upgrade core
git checkout tags/6.19
# (alternatively git merge if we have patched and want to keep our changes, or git reset --hard if we want to return to a clean checkout)
git commit

It would be great to figure out if we should continue down the current path of (a) suggesting overlaid branches and tarballs, (b) moving to another approach (perhaps the submodule approach described above), or perhaps (c) suggest separate "beginner" and "advanced" approaches.

If we can come to some consensus around this it will also give us time to refine the documentation and training materials, as well as perhaps produce and test some helper scripts (e.g. in Drush - someone made a start at http://drupal.org/project/drush_git, and there is additional discussion at http://drupal.org/node/908212) that could help keep things approachable and ease people into the transition.

Comments

Git migration and site deployment are different things

rfay's picture

IMO the migration of Drupal projects to git and the development of techniques for site management and deployment are completely different topics, as they always have been for those who used CVS to interact with drupal.org and whatever technique to deploy and manage their sites.

That said, proper site management of a Drupal site with version control is a subject that has always fascinated me and annoyed me. The best I've done to date with any version control system is to keep the whole tree in a single repository. It's simple, obvious, and robust. And updating/deploying is obvious and foolproof.

Git submodules are far less robust - to deploy you can't just do a git clone; you have to clone and then remember to refresh the submodules. Other than that, they're promising. Chapter 15 of the excellent Version Control with Git book has quite an excellent rundown on three different approaches to managing a project that is composed of other projects: Importing code (my technique) by copying or with git pull -s <subtree>, using a set of "externals" scripts (like with svn:externals), or with git submodules. It goes over the advantages and disadvantages of each.

I should mention too that for site deployment and management some people are going with the completely different technique of managing everything with drush make rather than source-controlling the site. Seems like a real departure to me, but I'm listening.

For module/theme and core development, I'm perfectly happy with nested projects. I just clone a module into the drupal checkout, and it does fine for me.

Git SubTree Merge / braid

MikeMcLean's picture

Subtree Merging

I'd also like to point out git subtree merging1 (and using braid2 to simplify that process).

The advantage to a sub-tree merge is that you have both the reference to the original external dependency and the
files themselves in your repository3. This means that when someone clones the repository they get the files
(unlike a sub-module where they have to remember to refresh the submodules). Also having the reference means you (or
someone who has cloned your work) can decide to update the dependency via a simple command.

The add-in to git (braid) streamlines much of the sub-tree merge process and make it as simple as svn:externals or git
submodules.

Footnotes:

1 http://apenwarr.ca/log/?m=200904#30

2 http://github.com/evilchelu/braid

3 http://daniel.collectiveidea.com/blog/2008/4/12/git-submodules-part-2

Absolutely cool

rfay's picture

Wow, am I looking forward to trying that out!

Spent some time with braid

rfay's picture

I spent a bit of time this morning with braid and would be interested in some tips.

  1. It's critical to do a "braid add" command only in the root of your git project, as the .braids file will be created wherever you use "braid add" and that can lead to very confusing behavior. (see issue).

  2. If you've added a project using braid, and push that to another repo, the branches (and remotes) that are required will not be on the other repo. This means that only one workarea can be used for updating or working with the subproject (as far as I understand). That kind of ruins the whole idea of being able to have identical git checkouts where you can do whatever you need to do.

  3. It does in fact work for the workflow where you update a subproject and push the whole project to a repo, then pull in the repo on a server, for example. The files are there as they should be.

In short, at this point, I think this method has the same amount of problems as all the others. However, it's probably as good as the merge-everything-into-one-tree that I've been doing. Probably better. Just doesn't solve everything I want solved :-)

I agree that site building

owen barton's picture

I agree that site building best practices are a bit of a side-discussion, but I do think this supports the Drupal project as a whole. Most module builders also build sites and many site builders will be switching to git. If there are ways that we can encourage and support site builders who use git it can result in a higher number of more experienced git users (who may more easily become d.o. project maintainers) and also sites built in a way that more easily supports contribution back to Drupal.

I think the braid stuff looks very interesting - I will try and check it out and we can compare the workflows against submodules. I agree the submodule init/update process after cloning is a pain, although I think that could be somewhat remedied by some scripts (e.g. Drush).

Links to related discussions

owen barton's picture

http://drupal.org/node/782684 (Documentation issue)
http://drupal.org/node/814174 (Drush core git support - looks like this supports submodules as an option)
http://drupal.org/project/git_deploy (stub for git analog of cvs_deploy to add .info metadata)
http://bluedroplet.com/blog/use-git-submodules-avoid-storing-drupal-core... (blog post that has some interesting discussion)

Single-file install/upgrade script

pillarsdotnet's picture

I'm using the following (crude, but serviceable) script to install/upgrade Drupal and associated libraries. I find it convenient to pack all of the code and data into a single file so it's easily deployable. Unlike Drush et. al. it handles installation of 3rd-party libraries, whether from CVS, SVN, Git, tarball, or zip. It also truncates long histories so that my entire filetree fits in around 400M. Why should I waste a couple of gigabytes storing the entire history of a project when I'm only interested in the last few commits?

#!/usr/bin/perl -w
use strict;
my $DRUPAL_HOME="/path/to/drupal";
my $name = $ARGV[0] || '';
my $next = $ARGV[1] || '';
my $zip = 'COMPRESSOR PROGRAM';
sub data();
if (! -d $DRUPAL_HOME)
  { system("git clone -qb master git://git.drupalcode.org/project/drupal.git $DRUPAL_HOME")==0 or die $!;
    chdir $DRUPAL_HOME or die "drupal: $!";
    system("git log -1 --no-merges --pretty=format:%H > .git/info/grafts")==0 or die $!;
    system("git filter-branch -- --all")==0 or die "drupal: $!";
    system("git gc --aggressive --quiet --prune=now")==0 or die "drupal: $!";
    system("git branch local")==0 or die "drupal: $!";
  }
else
  { chdir $DRUPAL_HOME or die "drupal: $!";
    if (!$name or $name eq 'drupal')
      { system("git pull -qf origin master >/dev/null")==0 or die "drupal: $!";
      }
  }
foreach(data())
{ my ($project,$method,$prefix,$url,$branch) = split;
  my ($file) = reverse(split('/',$url));
  next if $name && ($project ne $name);
  $name = '' if $next;
  die "No branch: $_" unless $branch;
  print "$prefix...";
  if ($method eq 'git')
    { if (-d $prefix)
        { chdir $prefix or die "$prefix: $!";
          system("git pull -qf origin $branch:$branch >/dev/null 2>\&1")==0 or die "$prefix: $!";
        }
      else
        { system("git clone -qb $branch $url $prefix")==0 or die "$prefix: $!";
          chdir $prefix or die "$prefix: $!";
          system("basename $DRUPAL_HOME/$prefix >> ../.gitignore")==0 or die "$prefix: $!";
          system("git log -1 --no-merges --pretty=format:%H > .git/info/grafts")==0 or die "$prefix: $!";
          system("git filter-branch -- --all")==0 or die "$prefix: $!";
          system("git gc --aggressive --quiet --prune=now")==0 or die "$prefix: $!";
          system("git branch local")== 0 or die "$prefix: $!";
        }
    }
  elsif ($method eq 'svn')
    { if (-d $prefix)
        { chdir $prefix or die "$prefix: $!";
          system("git checkout -q $branch")==0 or die "$prefix: $!";
          system("git svn -qq fetch")==0 or die "$prefix: $!";
        }
      else
        { system("git svn -qq clone $url $prefix")==0 or die "$prefix: $!";
          chdir $prefix or die "$prefix: $!";
          system("basename $DRUPAL_HOME/$prefix >> ../.gitignore")==0 or die "$prefix: $!";
          system("git branch -m $branch")==0 or die "$prefix: $!";
          system("git log -1 --no-merges --pretty=format:%H > .git/info/grafts")==0 or die "$prefix: $!";
          system("git filter-branch -- --all")==0 or die "$prefix: $!";
          system("git gc --aggressive --quiet --prune=now")==0 or die "$prefix: $!";
          system("git svn -qq gc")==0 or die "$prefix: $!";
          system("git branch local")==0 or die "$prefix: $!";
        }
    }
  elsif (($zip) = ($method =~ /tar-(.*)/))
    { if (-d $prefix)
        { chdir $prefix or die "$prefix: $!";
          system("git checkout -q master")==0 or die "$prefix: $!";
          chdir ".git/.orig" or die "$prefix: $!";
          system("wget -N $url 2>\&1 | grep -q 'Server file no newer' || ( rm -rf $project \&\& mkdir $project \&\& $zip -dc < $file | tar -C $project -x \&\& rsync -aC --delete $project/$branch/ $DRUPAL_HOME/$prefix/ )")==0 or die "$prefix: $!";
          chdir "$DRUPAL_HOME/$prefix" or die "$prefix: $!";
          system("git add .")==0 or die "$prefix: $!";
          system("[ -z \"\$(git status -s)\" ] || git commit -aqm 'Update from $url'")==0 or die "$prefix: $!";
        }
      else
        { system("git init -q $prefix")==0 or die "$prefix: $!";
          mkdir "$prefix/.git/.orig" or die "$prefix: $!";
          chdir "$prefix/.git/.orig" or die "$prefix: $!";
          system("basename $DRUPAL_HOME/$prefix >> ../.gitignore")==0 or die "$prefix: $!";
          system("wget -q $url \&\& mkdir $project \&\& $zip -dc < $file | tar -C $project -x \&\& rsync -aC $project/$branch/ $DRUPAL_HOME/$prefix/")==0 or die "$prefix: $!";
          chdir "$DRUPAL_HOME/$prefix" or die "$prefix: $!";
          system("git add .")==0 or die "$prefix: $!";
          system("git commit -aqm 'Initial download from $url'")==0 or die "$prefix: $!";
          system("git branch local")==0 or die "$prefix: $!";
        }
      $branch = 'master';
    }
  elsif ($method eq 'zip')
    { if (-d $prefix)
        { chdir $prefix or die "$prefix: $!";
          system("git checkout -q master")==0 or die "$prefix: $!";
          chdir ".git/.orig" or die "$prefix: $!";
          system("wget -N $url 2>\&1 | grep -q 'Server file no newer' || ( rm -rf $project \&\& mkdir $project \&\& cd $project \&\& unzip -u ../$file \&\& rsync -aC --delete $branch/ $DRUPAL_HOME/$prefix/ )")==0 or die "$prefix: $!";
          chdir "$DRUPAL_HOME/$prefix" or die "$prefix: $!";
          system("git add .")==0 or die "$prefix: $!";
          system("[ -z \"\$(git status -s)\" ] || git commit -aqm 'Update from $url'")==0 or die "$prefix: $!";
        }
      else
        { system("git init -q $prefix")==0 or die "$prefix: $!";
          mkdir "$prefix/.git/.orig";
          chdir "$prefix/.git/.orig" or die "$prefix: $!";
          system("wget -q $url \&\& mkdir $project \&\& cd $project \&\& unzip -qq ../$file \&\& rsync -aC $branch/ $DRUPAL_HOME/$prefix/")==0 or die "$prefix: $!";
          chdir "$DRUPAL_HOME/$prefix" or die "$prefix: $!";
          system("basename $DRUPAL_HOME/$prefix >> ../.gitignore")==0 or die "$prefix: $!";
          system("git add .")==0 or die "$prefix: $!";
          system("git commit -aqm 'Initial download from $url'")==0 or die "$prefix: $!";
          system("git branch local")==0 or die "$prefix: $!";
        }
      $branch = 'master';
    }
  else
    { die "Bad method: $method";
    }
  # print("git checkout -q local\n");
  system("git checkout -q local")==0 or die "$prefix: $!";
  # print("git pull -qf . $branch\n");
  system("git pull -qf . $branch 2>/dev/null")==0 or die "$prefix: $!";
  # print("chdir $DRUPAL_HOME\n");
  chdir $DRUPAL_HOME or die "drupal: $!";
}
print 'drupal...';
# print("git checkout -q local\n");
system("git checkout -q local")==0 or die "drupal: $!";
# print("git pull -qf . master\n");
system("git pull -qf . master 2>/dev/null")==0 or die "drupal: $!";
system("[ -z \"\$(git status -s)\" ] || git commit -aqm 'Update from git://git.drupalcode.org/project/drupal.git'")==0 or die "drupal: $!";
print "Done.\n";

(continued in next comment...)

Single-file install/upgrade script (continued)

pillarsdotnet's picture

sub data()
  { return
      (
        'a-cloudy-day-mobile git sites/all/themes/a-cloudy-day-mobile git://git.drupalcode.org/project/a-cloudy-day-mobile.git 7.x-1.x',
        'aberdeen git sites/all/themes/aberdeen git://git.drupalcode.org/project/aberdeen.git 7.x-1.x',
        'abessive git sites/all/themes/abessive git://git.drupalcode.org/project/abessive.git 7.x-1.x',
        'adaptivetheme git sites/all/themes/adaptivetheme git://git.drupalcode.org/project/adaptivetheme.git 7.x-1.x',
        'addanother git sites/all/modules/addanother git://git.drupalcode.org/project/addanother.git 7.x-1.x',
        'addressfield git sites/all/modules/addressfield git://git.drupalcode.org/project/addressfield.git master',
        'addthis git sites/all/modules/addthis git://git.drupalcode.org/project/addthis.git 7.x-2.x',
        'addtoany git sites/all/modules/addtoany git://git.drupalcode.org/project/addtoany.git 7.x-1.x',
        'admin git sites/all/modules/admin git://git.drupalcode.org/project/admin.git 7.x-2.x',
        'admin_menu git sites/all/modules/admin_menu git://git.drupalcode.org/project/admin_menu.git master',
        'admin_tools git sites/all/modules/admin_tools git://git.drupalcode.org/project/admin_tools.git master',
        'advanced_help git sites/all/modules/advanced_help git://git.drupalcode.org/project/advanced_help.git 7.x-1.x',
        'alt_login git sites/all/modules/alt_login git://git.drupalcode.org/project/alt_login.git master',
        'amazon git sites/all/modules/amazon git://git.drupalcode.org/project/amazon.git master',
        'antonelli git sites/all/themes/antonelli git://git.drupalcode.org/project/antonelli.git 7.x-1.x',
        'apc git sites/all/modules/apc git://git.drupalcode.org/project/apc.git 7.x-1.x 7.x-1.x',
        'atom git sites/all/modules/atom git://git.drupalcode.org/project/atom.git master',
        'austin git sites/all/themes/austin git://git.drupalcode.org/project/austin.git master',
        'balance_tracker git sites/all/modules/balance_tracker git://git.drupalcode.org/project/balance_tracker.git master',
        'basic git sites/all/themes/basic git://git.drupalcode.org/project/basic.git 7.x-1.x 7.x-1.x',
        'blockcache_alter git sites/all/modules/blockcache_alter git://git.drupalcode.org/project/blockcache_alter.git 7.x-1.x',
        'blueprint git sites/all/themes/blueprint git://git.drupalcode.org/project/blueprint.git 7.x-1.x',
        'boost git sites/all/modules/boost git://git.drupalcode.org/project/boost.git 7.x-1.x',
        'boron git sites/all/themes/boron git://git.drupalcode.org/project/boron.git 7.x-1.x',
        'browscap tar-gzip sites/all/modules/browscap http://windmill.sk/files/modules/browscap-7.x-1.x-dev-pasq.tgz browscap',
        'calendar git sites/all/modules/calendar git://git.drupalcode.org/project/calendar.git master',
        'cck git sites/all/modules/cck git://git.drupalcode.org/project/cck.git master',
        'chamilo git sites/all/modules/chamilo git://git.drupalcode.org/project/chamilo.git 7.x-1.x',
        'charts git sites/all/modules/charts git://git.drupalcode.org/project/charts.git 7.x-1.x',
        'chromephp git sites/all/libraries/chromephp git://github.com/ccampbell/chromephp.git master',
        'ckeditor tar-gzip sites/all/libraries/ckeditor http://download.cksource.com/CKEditor/CKEditor/Nightly%20Build/ckeditor_... ckeditor',
        'comment_subject git sites/all/modules/comment_subject git://git.drupalcode.org/project/comment_subject.git master',
        'commerce git sites/all/modules/commerce git://git.drupalcode.org/project/commerce.git master',
        'commerce_authnet git sites/all/modules/commerce_authnet git://git.drupalcode.org/project/commerce_authnet.git master',
        'commerce_cybersource git sites/all/modules/commerce_cybersource git://git.drupalcode.org/project/commerce_cybersource.git master',
        'commerce_paypal git sites/all/modules/commerce_paypal git://git.drupalcode.org/project/commerce_paypal.git master',
        'content_type_overview git sites/all/modules/content_type_overview git://git.drupalcode.org/project/content_type_overview.git 7.x-1.x',
        'corolla git sites/all/themes/corolla git://git.drupalcode.org/project/corolla.git master',
        'ctools git sites/all/modules/ctools git://git.drupalcode.org/project/ctools.git master',
        'custom_breadcrumbs git sites/all/modules/custom_breadcrumbs git://git.drupalcode.org/project/custom_breadcrumbs.git 7.x-1.x',
        'custom_formatters git sites/all/modules/custom_formatters git://git.drupalcode.org/project/custom_formatters.git master',
        'danland git sites/all/themes/danland git://git.drupalcode.org/project/danland.git 7.x-1.x',
        'date git sites/all/modules/date git://git.drupalcode.org/project/date.git master',
        'date_popup_authored git sites/all/modules/date_popup_authored git://git.drupalcode.org/project/date_popup_authored.git 7.x-1.x 7.x-1.x 7.x-1.x',
        'date_repeat_presets git sites/all/modules/date_repeat_presets git://git.drupalcode.org/project/date_repeat_presets.git 7.x-1.x',
        'devel git sites/all/modules/devel git://git.drupalcode.org/project/devel.git master',
        'dhtml_menu git sites/all/modules/dhtml_menu git://git.drupalcode.org/project/dhtml_menu.git master',
        'diff git sites/all/modules/diff git://git.drupalcode.org/project/diff.git 7.x-2.x',
        'dingus git sites/all/themes/dingus git://git.drupalcode.org/project/dingus.git 7.x-1.x',
        'disqus git sites/all/modules/disqus git://git.drupalcode.org/project/disqus.git 7.x-1.x',
        'download_file git sites/all/modules/download_file git://git.drupalcode.org/project/download_file.git 7.x-1.x',
        'dragndrop_uploads git sites/all/modules/dragndrop_uploads git://git.drupalcode.org/project/dragndrop_uploads.git master',
        'drupalforfirebug git sites/all/modules/drupalforfirebug git://git.drupalcode.org/project/drupalforfirebug.git 7.x-1.x',
        'ds git sites/all/modules/ds git://git.drupalcode.org/project/ds.git 7.x-1.x',
        'email git sites/all/modules/email git://git.drupalcode.org/project/email.git 7.x-1.x',
        'email_confirm git sites/all/modules/email_confirm git://git.drupalcode.org/project/email_confirm.git 7.x-1.x',
        'emogrifier zip sites/all/libraries/emogrifier http://www.pelagodesign.com/emogrifier/emogrifier.zip .',
        'enabled_modules git sites/all/modules/enabled_modules git://git.drupalcode.org/project/enabled_modules.git master',
        'enews git sites/all/modules/enews git://git.drupalcode.org/project/enews.git master',
        'entity git sites/all/modules/entity git://git.drupalcode.org/project/entity.git 7.x-1.x',
        'extlink git sites/all/modules/extlink git://git.drupalcode.org/project/extlink.git master',
        'ext_search_page git sites/all/modules/ext_search_page git://git.drupalcode.org/project/ext_search_page.git master',
        'ezmlm git sites/all/modules/ezmlm git://git.drupalcode.org/project/ezmlm.git 7.x-1.x',
        'facebook_stream git sites/all/modules/facebook_stream git://git.drupalcode.org/project/facebook_stream.git 7.x-1.x',
        'farbtastic svn sites/all/libraries/farbtastic http://farbtastic.googlecode.com/svn/trunk/src farbtastic',
        'featured_content git sites/all/modules/featured_content git://git.drupalcode.org/project/featured_content.git 7.x-1.x',
        'field_group git sites/all/modules/field_group git://git.drupalcode.org/project/field_group.git 7.x-1.x',
        'file_aliases git sites/all/modules/file_aliases git://git.drupalcode.org/project/file_aliases.git master',
        'filefield_nginx_progress git sites/all/modules/filefield_nginx_progress git://git.drupalcode.org/project/filefield_nginx_progress.git master',
        'filefield_paths git sites/all/modules/filefield_paths git://git.drupalcode.org/project/filefield_paths.git master',
        'firephp-libs git sites/all/libraries/firephp-libs git://github.com/cadorn/firephp-libs.git master',
        'flexifilter git sites/all/modules/flexifilter git://github.com/axyjo/flexifilter-d7.git master',
        'floater git sites/all/themes/floater git://git.drupalcode.org/project/floater.git 7.x-1.x',
        'follow git sites/all/modules/follow git://git.drupalcode.org/project/follow.git master',
        'forward git sites/all/modules/forward git://git.drupalcode.org/project/forward.git master',
        'fusion git sites/all/themes/fusion git://git.drupalcode.org/project/fusion.git master',
        'galleryformatter git sites/all/modules/galleryformatter git://git.drupalcode.org/project/galleryformatter.git 7.x-1.x',
        'genesis git sites/all/themes/genesis git://git.drupalcode.org/project/genesis.git master',
        'getid3 git sites/all/modules/getid3 git://git.drupalcode.org/project/getid3.git master',
        'getid3 zip sites/all/libraries/getid3 http://softlayer.dl.sourceforge.net/project/getid3/getID3%28%29%201.x/1.... .',
        'git_deploy git sites/all/modules/git_deploy git://git.drupalcode.org/project/git_deploy.git master',
        'globalredirect git sites/all/modules/globalredirect git://git.drupalcode.org/project/globalredirect.git 7.x-1.x',
        'google_analytics git sites/all/modules/google_analytics git://git.drupalcode.org/project/google_analytics.git master',
        'gravatar git sites/all/modules/gravatar git://git.drupalcode.org/project/gravatar.git 7.x-1.x',
        'heartbeat git sites/all/modules/heartbeat git://git.drupalcode.org/project/heartbeat.git 7.x-1.x',
        'htmlmail git sites/all/modules/htmlmail git://git.drupalcode.org/project/htmlmail.git 7.x-1.x',
        'htmlpurifier git sites/all/libraries/htmlpurifier git://repo.or.cz/htmlpurifier.git master',
        'htmlpurifier git sites/all/modules/htmlpurifier git://git.drupalcode.org/project/htmlpurifier.git 7.x-1.x',
        'i18n git sites/all/modules/i18n git://git.drupalcode.org/project/i18n.git 7.x-1.x',
        'imageapi git sites/all/modules/imageapi git://git.drupalcode.org/project/imageapi.git master',
        'imce git sites/all/modules/imce git://git.drupalcode.org/project/imce.git 7.x-1.x',
        'imce_wysiwyg git sites/all/modules/imce_wysiwyg git://git.drupalcode.org/project/imce_wysiwyg.git master',
        'inkribbon git sites/all/themes/inkribbon git://git.drupalcode.org/project/inkribbon.git master',
        'inline_messages git sites/all/modules/inline_messages git://git.drupalcode.org/project/inline_messages.git 7.x-1.x',
        'intlinks git sites/all/modules/intlinks git://git.drupalcode.org/project/intlinks.git master',
        'jquery git sites/all/libraries/jquery git://github.com/jquery/jquery.git master',
        'jquery git sites/all/modules/jquery git://git.drupalcode.org/project/jquery.git master',
        'jquery-ui git sites/all/libraries/jquery-ui git://github.com/jquery/jquery-ui.git master',
        'jquery_ui git sites/all/modules/jquery_ui git://git.drupalcode.org/project/jquery_ui.git 7.x-1.x',
        'jquery_update git sites/all/modules/jquery_update git://git.drupalcode.org/project/jquery_update.git master',
        'jskitcomments git sites/all/modules/jskitcomments git://git.drupalcode.org/project/jskitcomments.git master',
        'jwysiwyg git sites/all/libraries/jwysiwyg-git git://github.com/akzhan/jwysiwyg.git master',
        'layoutstudio git sites/all/themes/layoutstudio git://git.drupalcode.org/project/layoutstudio.git 7.x-1.x',
        'less git sites/all/modules/less git://git.drupalcode.org/project/less.git 7.x-2.x',
        'libraries git sites/all/modules/libraries git://git.drupalcode.org/project/libraries.git master',
        'link git sites/all/modules/link git://git.drupalcode.org/project/link.git 7.x-1.x',
        'logintoboggan git sites/all/modules/logintoboggan git://git.drupalcode.org/project/logintoboggan.git master',
        'markdown git sites/all/modules/markdown git://git.drupalcode.org/project/markdown.git 7.x-1.x',
        'media git sites/all/modules/media git://git.drupalcode.org/project/media.git master',
        'media_gallery git sites/all/modules/media_gallery git://git.drupalcode.org/project/media_gallery.git master',
        'mediafront git sites/all/modules/mediafront git://git.drupalcode.org/project/mediafront.git 7.x-1.x',
        'memcache git sites/all/modules/memcache git://git.drupalcode.org/project/memcache.git 7.x-1.x',
        'menu_admin_per_menu git sites/all/modules/menu_admin_per_menu git://git.drupalcode.org/project/menu_admin_per_menu.git master',
        'menu_firstchild git sites/all/modules/menu_firstchild git://git.drupalcode.org/project/menu_firstchild.git master',
        'mobi git sites/all/themes/mobi git://git.drupalcode.org/project/mobi.git master',
        'mobile git sites/all/themes/mobile git://git.drupalcode.org/project/mobile.git 7.x-1.x',
        'mobile_theme git sites/all/modules/mobile_theme git://git.drupalcode.org/project/mobile_theme.git 7.x-1.x',
        'mollom git sites/all/modules/mollom git://git.drupalcode.org/project/mollom.git master',
        'mpac git sites/all/modules/mpac git://git.drupalcode.org/project/mpac.git 7.x-1.x',
        'mulpo git sites/all/themes/mulpo git://git.drupalcode.org/project/mulpo.git 7.x-1.x',
        'multiblock git sites/all/modules/multiblock git://git.drupalcode.org/project/multiblock.git 7.x-1.x',
        'multiform git sites/all/modules/multiform git://git.drupalcode.org/project/multiform.git master',
        'mystique_theme git sites/all/themes/mystique_theme git://git.drupalcode.org/project/mystique_theme.git 7.x-1.x',
        'nice_menus git sites/all/modules/nice_menus git://git.drupalcode.org/project/nice_menus.git master',
        'nodesinblock git sites/all/modules/nodesinblock git://git.drupalcode.org/project/nodesinblock.git 7.x-1.x',
        'orange git sites/all/themes/orange git://git.drupalcode.org/project/orange.git 7.x-1.x',
        'page_title git sites/all/modules/page_title git://git.drupalcode.org/project/page_title.git 7.x-2.x',
        'pagestyle git sites/all/modules/pagestyle git://git.drupalcode.org/project/pagestyle.git master',
        'panels git sites/all/modules/panels git://git.drupalcode.org/project/panels.git master',
        'path_redirect git sites/all/modules/path_redirect git://git.drupalcode.org/project/path_redirect.git master',
        'pathauto git sites/all/modules/pathauto git://git.drupalcode.org/project/pathauto.git master',
        'pathcache git sites/all/modules/pathcache git://git.drupalcode.org/project/pathcache.git 6.x-1.x',
        'paypal_donate git sites/all/modules/paypal_donate git://git.drupalcode.org/project/paypal_donate.git 7.x-1.x',
        'pixture_reloaded git sites/all/themes/pixture_reloaded git://git.drupalcode.org/project/pixture_reloaded.git 7.x-1.x',
        'pockett git sites/all/themes/pockett git://git.drupalcode.org/project/pockett.git 7.x-1.x',
        'preset git sites/all/modules/preset git://git.drupalcode.org/project/preset.git 7.x-1.x',
        'print git sites/all/modules/print git://git.drupalcode.org/project/print.git master',
        'privatemsg git sites/all/modules/privatemsg git://git.drupalcode.org/project/privatemsg.git 7.x-1.x',
        'quicktabs git sites/all/modules/quicktabs git://git.drupalcode.org/project/quicktabs.git 7.x-2.x',
        'quotes git sites/all/modules/quotes git://git.drupalcode.org/project/quotes.git 7.x-1.x',
        'raphael git sites/all/modules/raphael git://git.drupalcode.org/project/raphael.git 7.x-1.x',
        'realname git sites/all/modules/realname git://git.drupalcode.org/project/realname.git 7.x-1.x',
        'references git sites/all/modules/references git://git.drupalcode.org/project/references.git 7.x-2.x',
        'relevant_content git sites/all/modules/relevant_content git://git.drupalcode.org/project/relevant_content.git 7.x-1.x',
        'revision_all git sites/all/modules/revision_all git://git.drupalcode.org/project/revision_all.git master',
        'revisions_rss git sites/all/modules/revisions_rss git://git.drupalcode.org/project/revisions_rss.git master',
        'role_change_notify git sites/all/modules/role_change_notify git://git.drupalcode.org/project/role_change_notify.git master master',
        'role_delegation git sites/all/modules/role_delegation git://git.drupalcode.org/project/role_delegation.git master',
        'rubik git sites/all/themes/rubik git://git.drupalcode.org/project/rubik.git 7.x-4.x',
        'rules git sites/all/modules/rules git://git.drupalcode.org/project/rules.git 7.x-2.x',
        'school_administration git sites/all/modules/school_administration git://git.drupalcode.org/project/school_administration.git master',
        'search_api git sites/all/modules/search_api git://git.drupalcode.org/project/search_api.git 7.x-1.x',
        'search404 git sites/all/modules/search404 git://git.drupalcode.org/project/search404.git 7.x-1.x',
        'service_links git sites/all/modules/service_links git://git.drupalcode.org/project/service_links.git 7.x-2.x',
        'services git sites/all/modules/services git://git.drupalcode.org/project/services.git 7.x-1.x',
        'similarterms git sites/all/modules/similarterms git://git.drupalcode.org/project/similarterms.git master',
        'simple_paypal git sites/all/modules/simple_paypal git://git.drupalcode.org/project/simple_paypal.git 7.x-1.x',
        'simplenews git sites/all/modules/simplenews git://git.drupalcode.org/project/simplenews.git master',
        'simplewiki git sites/all/modules/simplewiki git://git.drupalcode.org/project/simplewiki.git 7.x-1.x',
        'simplify_node_add git sites/all/modules/simplify_node_add git://git.drupalcode.org/project/simplify_node_add.git 7.x-1.x',
        'site_verify git sites/all/modules/site_verify git://git.drupalcode.org/project/site_verify.git master',
        'skinr git sites/all/modules/skinr git://git.drupalcode.org/project/skinr.git master',
        'smtp git sites/all/modules/smtp git://git.drupalcode.org/project/smtp.git 7.x-1.x',
        'styles git sites/all/modules/styles git://git.drupalcode.org/project/styles.git 7.x-1.x',
        'superfish git sites/all/modules/superfish git://git.drupalcode.org/project/superfish.git 7.x-1.x',
        'syndication git sites/all/modules/syndication git://git.drupalcode.org/project/syndication.git 7.x-1.x',
        'tao git sites/all/themes/tao git://git.drupalcode.org/project/tao.git 7.x-3.x',
        'taxonomy_manager git sites/all/modules/taxonomy_manager git://git.drupalcode.org/project/taxonomy_manager.git 7.x-1.x',
        'taxonomy_title git sites/all/modules/taxonomy_title git://git.drupalcode.org/project/taxonomy_title.git master',
        'term_relations git sites/all/modules/term_relations git://git.drupalcode.org/project/term_relations.git 7.x-1.x',
        'textile git sites/all/modules/textile git://git.drupalcode.org/project/textile.git 7.x-2.x master',
        'textile svn sites/all/libraries/textile http://textpattern.googlecode.com/svn/development/4.x/textpattern/lib textile',
        'textsize git sites/all/modules/textsize git://git.drupalcode.org/project/textsize.git master',
        'thrifty404 git sites/all/modules/thrifty404 git://git.drupalcode.org/project/thrifty404.git 7.x-1.x',
        'titan git sites/all/themes/titan git://git.drupalcode.org/project/titan.git master',
        'token git sites/all/modules/token git://git.drupalcode.org/project/token.git master',
        'toolbar_hide git sites/all/modules/toolbar_hide git://git.drupalcode.org/project/toolbar_hide.git 7.x-1.x',
        'touch_icons git sites/all/modules/touch_icons git://git.drupalcode.org/project/touch_icons.git 7.x-1.x',
        'transliteration git sites/all/modules/transliteration git://git.drupalcode.org/project/transliteration.git master',
        'typogrify git sites/all/modules/typogrify git://git.drupalcode.org/project/typogrify.git 7.x-1.x',
        'uniform git sites/all/libraries/uniform git://github.com/pixelmatrix/uniform.git master',
        'uniform git sites/all/modules/uniform git://git.drupalcode.org/project/uniform.git master',
        'unitrack git sites/all/modules/unitrack git://git.drupalcode.org/project/unitrack.git master',
        'upload_replace git sites/all/modules/upload_replace git://git.drupalcode.org/project/upload_replace.git 7.x-1.x master',
        'url_alter git sites/all/modules/url_alter git://git.drupalcode.org/project/url_alter.git master',
        'user_force_term git sites/all/modules/user_force_term git://git.drupalcode.org/project/user_force_term.git 7.x-1.x',
        'userprotect git sites/all/modules/userprotect git://git.drupalcode.org/project/userprotect.git master',
        'vars git sites/all/modules/vars git://git.drupalcode.org/project/vars.git 7.x-2.x',
        'video git sites/all/modules/video git://git.drupalcode.org/project/video.git 7.x-1.x',
        'views git sites/all/modules/views git://git.drupalcode.org/project/views.git 7.x-3.x',
        'views_bulk_operations git sites/all/modules/views_bulk_operations git://git.drupalcode.org/project/views_bulk_operations.git 7.x-3.x',
        'vocabindex git sites/all/modules/vocabindex git://git.drupalcode.org/project/vocabindex.git 7.x-2.x',
        'votingapi git sites/all/modules/votingapi git://git.drupalcode.org/project/votingapi.git 7.x-2.x',
        'webform git sites/all/modules/webform git://git.drupalcode.org/project/webform.git master',
        'wkhtmltopdf tar-xz sites/all/libraries/wkhtmltopdf http://wkhtmltopdf.googlecode.com/files/wkhtmltoimage-0.10.0_rc1-static-... .',
        'wysiwyg git sites/all/modules/wysiwyg git://git.drupalcode.org/project/wysiwyg.git master',
        'xapian git sites/all/modules/xapian git://git.drupalcode.org/project/xapian.git 7.x-1.x',
        'xmlsitemap git sites/all/modules/xmlsitemap git://git.drupalcode.org/project/xmlsitemap.git master',
        'yahoopipes git sites/all/modules/yahoopipes git://git.drupalcode.org/project/yahoopipes.git 7.x-1.x',
        'zen git sites/all/themes/zen git://git.drupalcode.org/project/zen.git master',
      );
  }

git+yum+drupal = nice combo

jdonson's picture

Did we resolve the earlier stated concerns about git dependencies?!?

Git, Drupal and Package Managers need to play nice.

Many use cases make this clear. There is no one best way, but some intelligent defaults would be helpful.

Hosting yum and git repos of installation profiles where all code is hosted @ drupal.org is KEY.

Unit testing should be built right into these approaches.

I would like to inquire how dependency trees and corresponding call stats can be deduced.

This seems crucial to the topics discussed, but sorry if not deemed relevant. Thank you!

Jeremy Donson
Database and Systems Engineer
New York City

Drupal.org Git Team

Group organizers

Group notifications

This group offers an RSS feed. Or subscribe to these personalized, sitewide feeds: