Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
Example:
vcsrepo { '/path/to/repo':
ensure => mirror,
provider => git,
source => 'git://example.com/repo.git',
}
|
|
this will stop failing in case there is a tag which is a substring of an existing branch name.
for example if there is a tag 'release' and a branch 'release/integration' current code will match 'release/integration' with pattern 'release' and decide that a branch checkout is needed. but release branch does not exist so it will fail.
this simple fix resolves the issue.
|
|
Explitly unset SSH_AUTH_SOCK; it is preferred to the -i flag
|
|
|
|
The URL can have special characters, making the regex match fail.
|
|
Will also work with empty repositories.
|
|
This would explode when revision was unspecified when you were on a
branch. Use the branch you're currently on when updating.
|
|
Even if the -i flag is explicitly passed via the command line, openssh
ignores the identity file if an socket exists to an SSH authentication
agent. In cases where puppet has been configured to use an explicit
identity file, altering behavior based on the calling environment of
puppet violates the principle of least surprise, and can lead to
inconsistent deployments.
Work around this odd corner case of ssh by explicitly unsetting
SSH_AUTH_SOCK inside the ssh wrapper.
|
|
|
|
MODULES-2131 Git provider now takes account of revision property when using depth property.
|
|
depth property.
|
|
Consider the submodules flag on specific revision cloning
|
|
Very often /tmp is mounted noexec for security reasons related to it
being writable by all users. This stopped vcsrepo's git provider from
working.
This pull request uses puppet's statedir as it is not writable by all
users and is a good candidate for transient state like the git
provider's identity script for the $GIT_SSH command.
An alternative in the future that wouldn't require a temporary file is
to set $GIT_SSH_COMMAND instead of $GIT_SSH, except this was added in
git 2.3 and is too new to depend on.
|
|
Shallow clone with one commit that corresponds to arbitrary tag from arbitrary branch
|
|
Without this commit, the unit tests for the git provider changing
multiple remotes mocks the remotes in a particular order. While in
practice it doesn't matter which remote the update_remotes method
updates first, the unit tests must be able to mock them in the correct
order. For ruby 1.8.7, a Hash will not necessarily produce key value
pairs in the same order on each run, which causes intermittent failures
in the unit tests. This change sorts the :source property values before
trying to update them, and updates the unit tests to expect the values
in alphabetical order.
|
|
|
|
|
|
|
|
|
|
Add submodules feature to git provider
|
|
|
|
The `retrieve` method was calling `create` and `destroy` on every run
with `force => true`. Retrieve should not be making any changes to the
system, so removed that code, and updated `working_copy_exists` to make
sure that the directory not only contains a `.git` directory, but also
if `source` is specified it also matches `#{path}/.git/config` so that
it will overwrite a git repo with a different source.
Updated tests to not check for the old broken behavior. Added a regression test.
|
|
Change uid by Puppet execution API
|
|
Thanks to @revhazroot for identifying the problem that excludes with a
string or single-element array fails on Ruby >= 1.9.
|
|
|
|
Previously vcsrepo detached HEAD on checkout which caused further branch
revisions to fail. This corrects the behavior, and works on git 1.7,
1.8, 1.9, and 2.0
|
|
|
|
Update specs and fix FM-1361
|
|
- Add install.rb for pre-suite
- Add catches for failures/changes to manifest application
- Correct root ssh key copying
- Add sleeps for killing processes releasing ports
- Fix FM-1361
|
|
|
|
|
|
|
|
|
|
|
|
Don't 'su' if passed user is current user
|
|
When using the following sample, the provider does not use the value of remote
when cloning a repository:
vcsrepo {'/path/to/repo':
ensure => 'present',
provider => 'git',
remote => 'test',
source => 'git@somerepo:repo.git',
}
$ git remote
origin
This commit makes sure that the new repository has a remote with the
supplied value.
Closes #MODULES-430
|
|
The new parameter used to indicate that you want a shallow clone is `:depth`
|
|
This commit also contains git provider `latest' method formatting changes;
squashed by request.
|
|
|
|
|
|
|
|
'non-repository' at the path. That can be even just an empty directory. This
makes it so further puppet runs cannot ever complete properly, because of this
error:
change from absent to present failed: Could not create repository (non-repository at path)
This requires manual intervention to resolve (ie. removing the directory).
It is possible to pass the 'force => true' parameter to vcsrepo to handle this,
however, all this will do is remove whatever is there, even if it is a valid
repository. That means on every puppet run you get the tree removed and then a
new clone is done. This is less than ideal for a number of reasons.
So this commit adds a test to determine if the location contains a valid
repository and then it is used when 'force => true' to determine if it should
replace the existing content with a fresh clone.
Note: the valid_repo? check is also added to the 'def bare_git_config_exists?'
because the test that is done there is intended to look for a bare git
repository by checking to see if there 'config' is in the directory. This isn't
a particularly robust test because 'config' could be in a directory, when it
isn't a bare git repository (such as is common in a rails app) causing vcsrepo
to mistakenly think it was a proper bare repository, when it isn't.
|
|
|
|
|
|
|
|
|
|
Enable unlimited nesting for submodule updating
|