Avoid circular requirement in FileMetadata indirection
Try again to avoid circular dependency in file indirections

Requiring the model at the end of the file seems the best approach for now.
Merge remote-tracking branch 'upstream/2.7.x' into 2.7rc
(#15264) Custom title patterns can fail cryptically.

If a type uses a composite namevar and none of the supplied title
patterns matched, #parse_title would return a nonsensical array value.
This would lead to unexpected behavior like output like:

    /usr/lib/ruby/1.8/puppet/puppet/resource.rb:235:in `to_hash': undefined method `merge' for #<Array:0x007ffba3d80d78> (NoMethodError)

If a type overrides the title_patterns method and nothing matched,
there's no possible way to recover from this. To prevent misleading
errors from being thrown, this patch raises an error if none of the
title patterns matched.
(#15668) Don't pluginsync for apply

After trying out having apply pluginsync there have been several
unwanted side effects. This commit removes the apply command from
pluginsyncing and so leaves only agent and device still performing
pluginsync.
(#15668) Use only one way of triggering pluginsync

Previously the Configurer took a parameter, :skip_plugin_download, which
whould cause it to not trigger a pluginsync. At the same time the
pluginsync code (Downloader) would look at Puppet[:pluginsync] to decide
whether it should actually pluginsync or not.

This changes it so that there is only Pupppet[:pluginsync] which is
passed through to the Configurer as a :pluginsync parameter when the
Configurer is called. Now all callers can be explicit about doing the
pluginsync and the Configurer is less dependent on Puppet settings.
(#15665) Fix issue with eix-update on newer eix (>=0.25.2).
Merge branch '2.7.x' into 2.7rc
Update CHANGELOG lib/puppet.rb conf/redhat/puppet.spec for 2.7.19rc1
(#15668) Replace test for order of files in pluginsync

The previous version of this test relied on using puppet apply to check
that the module path order was preserved in deciding the files to use
from a pluginsync. Without apply performaning a pluginsync that was not
possible anymore, but this test is still useful.

This replaces the previous test with a new one that uses the master and
the agent for performing a pluginsync and checking what files the agent
recieves.
Merge pull request #983 from romke/ticket/2.7.x/15665_eix_update_run_every_time

(#15665) Fix issue with eix-update on newer eix (>=0.25.2).
Merge remote-tracking branch 'upstream/2.7.x' into 3.x

* upstream/2.7.x:
  Update CHANGELOG lib/puppet.rb conf/redhat/puppet.spec for 2.7.19rc1
  (#15665) Fix issue with eix-update on newer eix (>=0.25.2).
  Try again to avoid circular dependency in file indirections
  Avoid circular requirement in FileMetadata indirection

Conflicts:
	CHANGELOG
	conf/redhat/puppet.spec
	lib/puppet.rb
Merge remote-tracking branch 'upstream/3.x'

* upstream/3.x:
  Update CHANGELOG lib/puppet.rb conf/redhat/puppet.spec for 2.7.19rc1
  (#15665) Fix issue with eix-update on newer eix (>=0.25.2).
  Try again to avoid circular dependency in file indirections
  Avoid circular requirement in FileMetadata indirection
Merge pull request #968 into 3.x

* github.com:puppetlabs/puppet:
  (#15668) Replace test for order of files in pluginsync
  (#15668) Use only one way of triggering pluginsync
  (#15668) Don't pluginsync for apply
(Maint) Simplify CONTRIBUTING.md

The previous CONTRIBUTING.md was verbose and prone to change as branches
changed. After discussion on puppet-dev I've cut it down a lot and changed the
policy for which branch to target to be a "prefer master" policy where it is up
to the merger to make sure it will go on the right branch.
Merge pull request #995 from zaphod42/maint/2.7.x/simplify_contributing_doc

(Maint) Simplify CONTRIBUTING.md
Merge remote-tracking branch 'upstream/2.7.x' into 3.x

* upstream/2.7.x:
  (Maint) Simplify CONTRIBUTING.md
Merge remote-tracking branch 'upstream/3.x'

* upstream/3.x:
  (Maint) Simplify CONTRIBUTING.md
  (#15668) Replace test for order of files in pluginsync
  (#15668) Use only one way of triggering pluginsync
  (#15668) Don't pluginsync for apply
(Maint) Whitespace cleanup of CONTRIBUTING.md

Just noticed some whitespace errors.  This is a whitespace only change
that removes trailing whitespace from CONTRIBUTING.md
Add HOWTO hint on topic branches in CONTRIBUTING

Without this patch it's not very clear how to create a topic branch.
This has been a problem in the past because we often get pull requests
from the master branch to the master branch which can be confusing when
working outside of the GitHub Web UI.

This patch addresses the problem by providing a concrete example of how
to create a reasonable topic branch and start using it with two
commands.