Repository files navigation

Easy git deployment

Straightforward, Heroku-style, push-based deployment. Your deploys can become as simple as this:

$ git push production master

To get started, install the "git-deploy" gem.

gem install git-deploy

Only the person who is setting up deployment for the first time needs to install the gem. You don't have to add it to your project's Gemfile.

Which app languages/frameworks are supported?

Regardless of the fact that this tool is mostly written in Ruby, git-deploy can be useful for any kind of code that needs deploying on a remote server. The default scripts are suited for Ruby web apps, but can be edited to accommodate other frameworks.

Your deployment is customized with per-project callback scripts which can be written in any language.

The assumption is that you're deploying to a single host to which you connect over SSH using public/private key authentication.

Initial setup

  1. Create a git remote for where you'll push the code on your server. The name of this remote in the examples is "production", but it can be whatever you wish ("online", "website", or other).

    git remote add production "user@example.com:/apps/mynewapp"

    /apps/mynewapp is the directory where you want your code to reside on the remote server. If the directory doesn't exist, the next step creates it.

  2. Run the setup task:

    git deploy setup -r "production"

    This will initialize the remote git repository in the deploy directory (/apps/mynewapp in the above example) and install the remote git hook.

  3. Run the init task:

    git deploy init

    This generates default deploy callback scripts in the deploy/ directory. You should check them in git because they are going to be executed on the server during each deploy.

  4. Push the code.

    git push production master
  5. Login to your server and manually perform necessary one-time administrative operations. This might include:

    • set up the Apache/nginx virtual host for this application;
    • check your config/database.yml and create the production database.

Everyday deployments

If you've set your app correctly, visiting http://example.com in your browser should show it up and running.

Now, subsequent deployments are done simply by pushing to the branch that is currently checked out on the remote:

git push production master

Because the deployments are performed with git, nobody else on the team needs to install the "git-deploy" gem.

On every deploy, the default deploy/after_push script performs the following:

  1. updates git submodules (if there are any);
  2. runs bundle install --deployment if there is a Gemfile;
  3. runs rake db:migrate if new migrations have been added;
  4. clears cached CSS/JS assets in "public/stylesheets" and "public/javascripts";
  5. restarts the web application.

You can customize all this by editing generated scripts in the deploy/ directory of your app.

Deployments are logged to log/deploy.log in your application's directory.

How it works

The git deploy setup command installed a post-receive git hook in the remote repository. This is how your code on the server is kept up to date. This script checks out the latest version of your project from the current branch and runs the following callback scripts:

  • deploy/setup - on first push.
  • deploy/after_push - on subsequent pushes. It in turn executes:
    • deploy/before_restart
    • deploy/restart
    • deploy/after_restart
  • deploy/rollback - executed for git deploy rollback.

All of the callbacks are optional. These scripts are ordinary Unix executables. The ones which get generated for you by git deploy init are written in shell script and Ruby.

Extra commands

  • git deploy hooks - Updates git hooks on the remote repository

  • git deploy log [N=20] - Shows last 20 lines of deploy log on the server

  • git deploy rerun - Re-runs the deploy/after_push callback as if a git push happened

  • git deploy restart - Runs the deploy/restart callback

  • git deploy rollback - Undo a deploy by checking out the previous revision, runs deploy/rollback if exists instead of deploy/after_push

  • git deploy upload <files> - Copy local files to the remote app

About

git deployment made easy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Repository files navigation

Easy git deployment

Straightforward, Heroku-style, push-based deployment. Your deploys can become as simple as this:

$ git push production master

To get started, install the "git-deploy" gem.

gem install git-deploy

Only the person who is setting up deployment for the first time needs to install the gem. You don't have to add it to your project's Gemfile.

Which app languages/frameworks are supported?

Regardless of the fact that this tool is mostly written in Ruby, git-deploy can be useful for any kind of code that needs deploying on a remote server. The default scripts are suited for Ruby web apps, but can be edited to accommodate other frameworks.

Your deployment is customized with per-project callback scripts which can be written in any language.

The assumption is that you're deploying to a single host to which you connect over SSH using public/private key authentication.

Initial setup

  1. Create a git remote for where you'll push the code on your server. The name of this remote in the examples is "production", but it can be whatever you wish ("online", "website", or other).

    git remote add production "user@example.com:/apps/mynewapp"

    /apps/mynewapp is the directory where you want your code to reside on the remote server. If the directory doesn't exist, the next step creates it.

  2. Run the setup task:

    git deploy setup -r "production"

    This will initialize the remote git repository in the deploy directory (/apps/mynewapp in the above example) and install the remote git hook.

  3. Run the init task:

    git deploy init

    This generates default deploy callback scripts in the deploy/ directory. You should check them in git because they are going to be executed on the server during each deploy.

  4. Push the code.

    git push production master
  5. Login to your server and manually perform necessary one-time administrative operations. This might include:

    • set up the Apache/nginx virtual host for this application;
    • check your config/database.yml and create the production database.

Everyday deployments

If you've set your app correctly, visiting http://example.com in your browser should show it up and running.

Now, subsequent deployments are done simply by pushing to the branch that is currently checked out on the remote:

git push production master

Because the deployments are performed with git, nobody else on the team needs to install the "git-deploy" gem.

On every deploy, the default deploy/after_push script performs the following:

  1. updates git submodules (if there are any);
  2. runs bundle install --deployment if there is a Gemfile;
  3. runs rake db:migrate if new migrations have been added;
  4. clears cached CSS/JS assets in "public/stylesheets" and "public/javascripts";
  5. restarts the web application.

You can customize all this by editing generated scripts in the deploy/ directory of your app.

Deployments are logged to log/deploy.log in your application's directory.

How it works

The git deploy setup command installed a post-receive git hook in the remote repository. This is how your code on the server is kept up to date. This script checks out the latest version of your project from the current branch and runs the following callback scripts:

  • deploy/setup - on first push.
  • deploy/after_push - on subsequent pushes. It in turn executes:
    • deploy/before_restart
    • deploy/restart
    • deploy/after_restart
  • deploy/rollback - executed for git deploy rollback.

All of the callbacks are optional. These scripts are ordinary Unix executables. The ones which get generated for you by git deploy init are written in shell script and Ruby.

Extra commands

  • git deploy hooks - Updates git hooks on the remote repository

  • git deploy log [N=20] - Shows last 20 lines of deploy log on the server

  • git deploy rerun - Re-runs the deploy/after_push callback as if a git push happened

  • git deploy restart - Runs the deploy/restart callback

  • git deploy rollback - Undo a deploy by checking out the previous revision, runs deploy/rollback if exists instead of deploy/after_push

  • git deploy upload <files> - Copy local files to the remote app

About

git deployment made easy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Easy git deployment

Straightforward, Heroku-style, push-based deployment. Your deploys can become as simple as this:

$ git push production master

To get started, install the "git-deploy" gem.

gem install git-deploy

Only the person who is setting up deployment for the first time needs to install the gem. You don't have to add it to your project's Gemfile.

Which app languages/frameworks are supported?

Regardless of the fact that this tool is mostly written in Ruby, git-deploy can be useful for any kind of code that needs deploying on a remote server. The default scripts are suited for Ruby web apps, but can be edited to accommodate other frameworks.

Your deployment is customized with per-project callback scripts which can be written in any language.

The assumption is that you're deploying to a single host to which you connect over SSH using public/private key authentication.

Initial setup

  1. Create a git remote for where you'll push the code on your server. The name of this remote in the examples is "production", but it can be whatever you wish ("online", "website", or other).

    git remote add production "user@example.com:/apps/mynewapp"

    /apps/mynewapp is the directory where you want your code to reside on the remote server. If the directory doesn't exist, the next step creates it.

  2. Run the setup task:

    git deploy setup -r "production"

    This will initialize the remote git repository in the deploy directory (/apps/mynewapp in the above example) and install the remote git hook.

  3. Run the init task:

    git deploy init

    This generates default deploy callback scripts in the deploy/ directory. You should check them in git because they are going to be executed on the server during each deploy.

  4. Push the code.

    git push production master
  5. Login to your server and manually perform necessary one-time administrative operations. This might include:

    • set up the Apache/nginx virtual host for this application;
    • check your config/database.yml and create the production database.

Everyday deployments

If you've set your app correctly, visiting http://example.com in your browser should show it up and running.

Now, subsequent deployments are done simply by pushing to the branch that is currently checked out on the remote:

git push production master

Because the deployments are performed with git, nobody else on the team needs to install the "git-deploy" gem.

On every deploy, the default deploy/after_push script performs the following:

  1. updates git submodules (if there are any);
  2. runs bundle install --deployment if there is a Gemfile;
  3. runs rake db:migrate if new migrations have been added;
  4. clears cached CSS/JS assets in "public/stylesheets" and "public/javascripts";
  5. restarts the web application.

You can customize all this by editing generated scripts in the deploy/ directory of your app.

Deployments are logged to log/deploy.log in your application's directory.

How it works

The git deploy setup command installed a post-receive git hook in the remote repository. This is how your code on the server is kept up to date. This script checks out the latest version of your project from the current branch and runs the following callback scripts:

  • deploy/setup - on first push.
  • deploy/after_push - on subsequent pushes. It in turn executes:
    • deploy/before_restart
    • deploy/restart
    • deploy/after_restart
  • deploy/rollback - executed for git deploy rollback.

All of the callbacks are optional. These scripts are ordinary Unix executables. The ones which get generated for you by git deploy init are written in shell script and Ruby.

Extra commands

  • git deploy hooks - Updates git hooks on the remote repository

  • git deploy log [N=20] - Shows last 20 lines of deploy log on the server

  • git deploy rerun - Re-runs the deploy/after_push callback as if a git push happened

  • git deploy restart - Runs the deploy/restart callback

  • git deploy rollback - Undo a deploy by checking out the previous revision, runs deploy/rollback if exists instead of deploy/after_push

  • git deploy upload <files> - Copy local files to the remote app

About

git deployment made easy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Easy git deployment

Straightforward, Heroku-style, push-based deployment. Your deploys can become as simple as this:

$ git push production master

To get started, install the "git-deploy" gem.

gem install git-deploy

Only the person who is setting up deployment for the first time needs to install the gem. You don't have to add it to your project's Gemfile.

Which app languages/frameworks are supported?

Regardless of the fact that this tool is mostly written in Ruby, git-deploy can be useful for any kind of code that needs deploying on a remote server. The default scripts are suited for Ruby web apps, but can be edited to accommodate other frameworks.

Your deployment is customized with per-project callback scripts which can be written in any language.

The assumption is that you're deploying to a single host to which you connect over SSH using public/private key authentication.

Initial setup

  1. Create a git remote for where you'll push the code on your server. The name of this remote in the examples is "production", but it can be whatever you wish ("online", "website", or other).

    git remote add production "user@example.com:/apps/mynewapp"

    /apps/mynewapp is the directory where you want your code to reside on the remote server. If the directory doesn't exist, the next step creates it.

  2. Run the setup task:

    git deploy setup -r "production"

    This will initialize the remote git repository in the deploy directory (/apps/mynewapp in the above example) and install the remote git hook.

  3. Run the init task:

    git deploy init

    This generates default deploy callback scripts in the deploy/ directory. You should check them in git because they are going to be executed on the server during each deploy.

  4. Push the code.

    git push production master
  5. Login to your server and manually perform necessary one-time administrative operations. This might include:

    • set up the Apache/nginx virtual host for this application;
    • check your config/database.yml and create the production database.

Everyday deployments

If you've set your app correctly, visiting http://example.com in your browser should show it up and running.

Now, subsequent deployments are done simply by pushing to the branch that is currently checked out on the remote:

git push production master

Because the deployments are performed with git, nobody else on the team needs to install the "git-deploy" gem.

On every deploy, the default deploy/after_push script performs the following:

  1. updates git submodules (if there are any);
  2. runs bundle install --deployment if there is a Gemfile;
  3. runs rake db:migrate if new migrations have been added;
  4. clears cached CSS/JS assets in "public/stylesheets" and "public/javascripts";
  5. restarts the web application.

You can customize all this by editing generated scripts in the deploy/ directory of your app.

Deployments are logged to log/deploy.log in your application's directory.

How it works

The git deploy setup command installed a post-receive git hook in the remote repository. This is how your code on the server is kept up to date. This script checks out the latest version of your project from the current branch and runs the following callback scripts:

  • deploy/setup - on first push.
  • deploy/after_push - on subsequent pushes. It in turn executes:
    • deploy/before_restart
    • deploy/restart
    • deploy/after_restart
  • deploy/rollback - executed for git deploy rollback.

All of the callbacks are optional. These scripts are ordinary Unix executables. The ones which get generated for you by git deploy init are written in shell script and Ruby.

Extra commands

  • git deploy hooks - Updates git hooks on the remote repository

  • git deploy log [N=20] - Shows last 20 lines of deploy log on the server

  • git deploy rerun - Re-runs the deploy/after_push callback as if a git push happened

  • git deploy restart - Runs the deploy/restart callback

  • git deploy rollback - Undo a deploy by checking out the previous revision, runs deploy/rollback if exists instead of deploy/after_push

  • git deploy upload <files> - Copy local files to the remote app

About

git deployment made easy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Repository files navigation

Easy git deployment

Straightforward, Heroku-style, push-based deployment. Your deploys can become as simple as this:

$ git push production master

To get started, install the "git-deploy" gem.

gem install git-deploy

Only the person who is setting up deployment for the first time needs to install the gem. You don't have to add it to your project's Gemfile.

Which app languages/frameworks are supported?

Regardless of the fact that this tool is mostly written in Ruby, git-deploy can be useful for any kind of code that needs deploying on a remote server. The default scripts are suited for Ruby web apps, but can be edited to accommodate other frameworks.

Your deployment is customized with per-project callback scripts which can be written in any language.

The assumption is that you're deploying to a single host to which you connect over SSH using public/private key authentication.

Initial setup

  1. Create a git remote for where you'll push the code on your server. The name of this remote in the examples is "production", but it can be whatever you wish ("online", "website", or other).

    git remote add production "user@example.com:/apps/mynewapp"

    /apps/mynewapp is the directory where you want your code to reside on the remote server. If the directory doesn't exist, the next step creates it.

  2. Run the setup task:

    git deploy setup -r "production"

    This will initialize the remote git repository in the deploy directory (/apps/mynewapp in the above example) and install the remote git hook.

  3. Run the init task:

    git deploy init

    This generates default deploy callback scripts in the deploy/ directory. You should check them in git because they are going to be executed on the server during each deploy.

  4. Push the code.

    git push production master
  5. Login to your server and manually perform necessary one-time administrative operations. This might include:

    • set up the Apache/nginx virtual host for this application;
    • check your config/database.yml and create the production database.

Everyday deployments

If you've set your app correctly, visiting http://example.com in your browser should show it up and running.

Now, subsequent deployments are done simply by pushing to the branch that is currently checked out on the remote:

git push production master

Because the deployments are performed with git, nobody else on the team needs to install the "git-deploy" gem.

On every deploy, the default deploy/after_push script performs the following:

  1. updates git submodules (if there are any);
  2. runs bundle install --deployment if there is a Gemfile;
  3. runs rake db:migrate if new migrations have been added;
  4. clears cached CSS/JS assets in "public/stylesheets" and "public/javascripts";
  5. restarts the web application.

You can customize all this by editing generated scripts in the deploy/ directory of your app.

Deployments are logged to log/deploy.log in your application's directory.

How it works

The git deploy setup command installed a post-receive git hook in the remote repository. This is how your code on the server is kept up to date. This script checks out the latest version of your project from the current branch and runs the following callback scripts:

  • deploy/setup - on first push.
  • deploy/after_push - on subsequent pushes. It in turn executes:
    • deploy/before_restart
    • deploy/restart
    • deploy/after_restart
  • deploy/rollback - executed for git deploy rollback.

All of the callbacks are optional. These scripts are ordinary Unix executables. The ones which get generated for you by git deploy init are written in shell script and Ruby.

Extra commands

  • git deploy hooks - Updates git hooks on the remote repository

  • git deploy log [N=20] - Shows last 20 lines of deploy log on the server

  • git deploy rerun - Re-runs the deploy/after_push callback as if a git push happened

  • git deploy restart - Runs the deploy/restart callback

  • git deploy rollback - Undo a deploy by checking out the previous revision, runs deploy/rollback if exists instead of deploy/after_push

  • git deploy upload <files> - Copy local files to the remote app

About

git deployment made easy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Easy git deployment

Straightforward, Heroku-style, push-based deployment. Your deploys can become as simple as this:

$ git push production master

To get started, install the "git-deploy" gem.

gem install git-deploy

Only the person who is setting up deployment for the first time needs to install the gem. You don't have to add it to your project's Gemfile.

Which app languages/frameworks are supported?

Regardless of the fact that this tool is mostly written in Ruby, git-deploy can be useful for any kind of code that needs deploying on a remote server. The default scripts are suited for Ruby web apps, but can be edited to accommodate other frameworks.

Your deployment is customized with per-project callback scripts which can be written in any language.

The assumption is that you're deploying to a single host to which you connect over SSH using public/private key authentication.

Initial setup

  1. Create a git remote for where you'll push the code on your server. The name of this remote in the examples is "production", but it can be whatever you wish ("online", "website", or other).

    git remote add production "user@example.com:/apps/mynewapp"

    /apps/mynewapp is the directory where you want your code to reside on the remote server. If the directory doesn't exist, the next step creates it.

  2. Run the setup task:

    git deploy setup -r "production"

    This will initialize the remote git repository in the deploy directory (/apps/mynewapp in the above example) and install the remote git hook.

  3. Run the init task:

    git deploy init

    This generates default deploy callback scripts in the deploy/ directory. You should check them in git because they are going to be executed on the server during each deploy.

  4. Push the code.

    git push production master
  5. Login to your server and manually perform necessary one-time administrative operations. This might include:

    • set up the Apache/nginx virtual host for this application;
    • check your config/database.yml and create the production database.

Everyday deployments

If you've set your app correctly, visiting http://example.com in your browser should show it up and running.

Now, subsequent deployments are done simply by pushing to the branch that is currently checked out on the remote:

git push production master

Because the deployments are performed with git, nobody else on the team needs to install the "git-deploy" gem.

On every deploy, the default deploy/after_push script performs the following:

  1. updates git submodules (if there are any);
  2. runs bundle install --deployment if there is a Gemfile;
  3. runs rake db:migrate if new migrations have been added;
  4. clears cached CSS/JS assets in "public/stylesheets" and "public/javascripts";
  5. restarts the web application.

You can customize all this by editing generated scripts in the deploy/ directory of your app.

Deployments are logged to log/deploy.log in your application's directory.

How it works

The git deploy setup command installed a post-receive git hook in the remote repository. This is how your code on the server is kept up to date. This script checks out the latest version of your project from the current branch and runs the following callback scripts:

  • deploy/setup - on first push.
  • deploy/after_push - on subsequent pushes. It in turn executes:
    • deploy/before_restart
    • deploy/restart
    • deploy/after_restart
  • deploy/rollback - executed for git deploy rollback.

All of the callbacks are optional. These scripts are ordinary Unix executables. The ones which get generated for you by git deploy init are written in shell script and Ruby.

Extra commands

  • git deploy hooks - Updates git hooks on the remote repository

  • git deploy log [N=20] - Shows last 20 lines of deploy log on the server

  • git deploy rerun - Re-runs the deploy/after_push callback as if a git push happened

  • git deploy restart - Runs the deploy/restart callback

  • git deploy rollback - Undo a deploy by checking out the previous revision, runs deploy/rollback if exists instead of deploy/after_push

  • git deploy upload <files> - Copy local files to the remote app

About

git deployment made easy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Repository files navigation

Easy git deployment

Straightforward, Heroku-style, push-based deployment. Your deploys can become as simple as this:

$ git push production master

To get started, install the "git-deploy" gem.

gem install git-deploy

Only the person who is setting up deployment for the first time needs to install the gem. You don't have to add it to your project's Gemfile.

Which app languages/frameworks are supported?

Regardless of the fact that this tool is mostly written in Ruby, git-deploy can be useful for any kind of code that needs deploying on a remote server. The default scripts are suited for Ruby web apps, but can be edited to accommodate other frameworks.

Your deployment is customized with per-project callback scripts which can be written in any language.

The assumption is that you're deploying to a single host to which you connect over SSH using public/private key authentication.

Initial setup

  1. Create a git remote for where you'll push the code on your server. The name of this remote in the examples is "production", but it can be whatever you wish ("online", "website", or other).

    git remote add production "user@example.com:/apps/mynewapp"

    /apps/mynewapp is the directory where you want your code to reside on the remote server. If the directory doesn't exist, the next step creates it.

  2. Run the setup task:

    git deploy setup -r "production"

    This will initialize the remote git repository in the deploy directory (/apps/mynewapp in the above example) and install the remote git hook.

  3. Run the init task:

    git deploy init

    This generates default deploy callback scripts in the deploy/ directory. You should check them in git because they are going to be executed on the server during each deploy.

  4. Push the code.

    git push production master
  5. Login to your server and manually perform necessary one-time administrative operations. This might include:

    • set up the Apache/nginx virtual host for this application;
    • check your config/database.yml and create the production database.

Everyday deployments

If you've set your app correctly, visiting http://example.com in your browser should show it up and running.

Now, subsequent deployments are done simply by pushing to the branch that is currently checked out on the remote:

git push production master

Because the deployments are performed with git, nobody else on the team needs to install the "git-deploy" gem.

On every deploy, the default deploy/after_push script performs the following:

  1. updates git submodules (if there are any);
  2. runs bundle install --deployment if there is a Gemfile;
  3. runs rake db:migrate if new migrations have been added;
  4. clears cached CSS/JS assets in "public/stylesheets" and "public/javascripts";
  5. restarts the web application.

You can customize all this by editing generated scripts in the deploy/ directory of your app.

Deployments are logged to log/deploy.log in your application's directory.

How it works

The git deploy setup command installed a post-receive git hook in the remote repository. This is how your code on the server is kept up to date. This script checks out the latest version of your project from the current branch and runs the following callback scripts:

  • deploy/setup - on first push.
  • deploy/after_push - on subsequent pushes. It in turn executes:
    • deploy/before_restart
    • deploy/restart
    • deploy/after_restart
  • deploy/rollback - executed for git deploy rollback.

All of the callbacks are optional. These scripts are ordinary Unix executables. The ones which get generated for you by git deploy init are written in shell script and Ruby.

Extra commands

  • git deploy hooks - Updates git hooks on the remote repository

  • git deploy log [N=20] - Shows last 20 lines of deploy log on the server

  • git deploy rerun - Re-runs the deploy/after_push callback as if a git push happened

  • git deploy restart - Runs the deploy/restart callback

  • git deploy rollback - Undo a deploy by checking out the previous revision, runs deploy/rollback if exists instead of deploy/after_push

  • git deploy upload <files> - Copy local files to the remote app

About

git deployment made easy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Repository files navigation

Easy git deployment

Straightforward, Heroku-style, push-based deployment. Your deploys can become as simple as this:

$ git push production master

To get started, install the "git-deploy" gem.

gem install git-deploy

Only the person who is setting up deployment for the first time needs to install the gem. You don't have to add it to your project's Gemfile.

Which app languages/frameworks are supported?

Regardless of the fact that this tool is mostly written in Ruby, git-deploy can be useful for any kind of code that needs deploying on a remote server. The default scripts are suited for Ruby web apps, but can be edited to accommodate other frameworks.

Your deployment is customized with per-project callback scripts which can be written in any language.

The assumption is that you're deploying to a single host to which you connect over SSH using public/private key authentication.

Initial setup

  1. Create a git remote for where you'll push the code on your server. The name of this remote in the examples is "production", but it can be whatever you wish ("online", "website", or other).

    git remote add production "user@example.com:/apps/mynewapp"

    /apps/mynewapp is the directory where you want your code to reside on the remote server. If the directory doesn't exist, the next step creates it.

  2. Run the setup task:

    git deploy setup -r "production"

    This will initialize the remote git repository in the deploy directory (/apps/mynewapp in the above example) and install the remote git hook.

  3. Run the init task:

    git deploy init

    This generates default deploy callback scripts in the deploy/ directory. You should check them in git because they are going to be executed on the server during each deploy.

  4. Push the code.

    git push production master
  5. Login to your server and manually perform necessary one-time administrative operations. This might include:

    • set up the Apache/nginx virtual host for this application;
    • check your config/database.yml and create the production database.

Everyday deployments

If you've set your app correctly, visiting http://example.com in your browser should show it up and running.

Now, subsequent deployments are done simply by pushing to the branch that is currently checked out on the remote:

git push production master

Because the deployments are performed with git, nobody else on the team needs to install the "git-deploy" gem.

On every deploy, the default deploy/after_push script performs the following:

  1. updates git submodules (if there are any);
  2. runs bundle install --deployment if there is a Gemfile;
  3. runs rake db:migrate if new migrations have been added;
  4. clears cached CSS/JS assets in "public/stylesheets" and "public/javascripts";
  5. restarts the web application.

You can customize all this by editing generated scripts in the deploy/ directory of your app.

Deployments are logged to log/deploy.log in your application's directory.

How it works

The git deploy setup command installed a post-receive git hook in the remote repository. This is how your code on the server is kept up to date. This script checks out the latest version of your project from the current branch and runs the following callback scripts:

  • deploy/setup - on first push.
  • deploy/after_push - on subsequent pushes. It in turn executes:
    • deploy/before_restart
    • deploy/restart
    • deploy/after_restart
  • deploy/rollback - executed for git deploy rollback.

All of the callbacks are optional. These scripts are ordinary Unix executables. The ones which get generated for you by git deploy init are written in shell script and Ruby.

Extra commands

  • git deploy hooks - Updates git hooks on the remote repository

  • git deploy log [N=20] - Shows last 20 lines of deploy log on the server

  • git deploy rerun - Re-runs the deploy/after_push callback as if a git push happened

  • git deploy restart - Runs the deploy/restart callback

  • git deploy rollback - Undo a deploy by checking out the previous revision, runs deploy/rollback if exists instead of deploy/after_push

  • git deploy upload <files> - Copy local files to the remote app

About

git deployment made easy

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages