Save a fetchable ref per deployement

This commit is contained in:
Z.J. van de Weg 2016-09-30 15:45:27 +02:00
parent 4be63f5b5b
commit 7d46bd6128
4 changed files with 26 additions and 2 deletions

View File

@ -8,6 +8,7 @@ v 8.13.0 (unreleased)
- Replaced the check sign to arrow in the show build view. !6501
- Add a /wip slash command to toggle the Work In Progress status of a merge request. !6259 (tbalthazar)
- Speed-up group milestones show page
- Keep refs for each deployment
- Log LDAP lookup errors and don't swallow unrelated exceptions. !6103 (Markus Koller)
- Add more tests for calendar contribution (ClemMakesApps)
- Avoid database queries on Banzai::ReferenceParser::BaseParser for nodes without references

View File

@ -11,7 +11,7 @@ class Deployment < ActiveRecord::Base
delegate :name, to: :environment, prefix: true
after_save :keep_around_commit
after_save :create_ref
def commit
project.commit(sha)
@ -30,7 +30,7 @@ class Deployment < ActiveRecord::Base
end
def keep_around_commit
project.repository.keep_around(self.sha)
project.repository.fetch_ref(project.repository.path_to_repo, ref, ref_path)
end
def manual_actions
@ -76,4 +76,10 @@ class Deployment < ActiveRecord::Base
where.not(id: self.id).
take
end
private
def ref_path
"#{environment.ref_path}#{id}"
end
end

View File

@ -47,4 +47,8 @@ class Environment < ActiveRecord::Base
def update_merge_request_metrics?
self.name == "production"
end
def ref_path
"refs/environments/#{Shellwords.shellescape(name)}/"
end
end

View File

@ -14,6 +14,19 @@ Defining environments in a project's `.gitlab-ci.yml` lets developers track
Deployments are created when [jobs] deploy versions of code to [environments].
### Checkout deployments locally
Since 8.13, a reference in the git repository is saved for each deployment. So
knowing what the state is of your current environments is only a `git fetch`
away.
In your git config, append the `[remote "<your-remote>"] block with an extra
fetch line:
```
fetch = +refs/environments/*:refs/remotes/origin/environments/*
```
## Defining environments
You can create and delete environments manually in the web interface, but we