Skip to content

Instantly share code, notes, and snippets.

Wolfgang Teuber wteuber

Block or report user

Report or block wteuber

Hide content and notifications from this user.

Learn more about blocking users

Contact Support about this user’s behavior.

Learn more about reporting abuse

Report abuse
View GitHub Profile
wteuber /
Last active Oct 29, 2019
git: prune and delete gone local branches
#!/usr/bin/env bash
git remote prune origin && git branch -vv | grep 'origin/.*: gone]' | awk '{print $1}' | xargs git branch -d
wteuber /
Created May 28, 2019 — forked from cemeng/
Codeship Install MySQL 5.6
# Install a custom MySQL 5.7 version -
# To run this script on Codeship, add the following
# command to your project's setup commands:
# \curl -sSL | bash -s
# Add the following environment variables to your project configuration
# (otherwise the defaults below will be used).
# Mac OS X:
script -q colored_word_diff.txt git diff --word-diff
cat colored_word_diff.txt|ansi2html > colored_word_diff.html
wteuber / redirection.txt
Created Aug 17, 2018
All about redirection of terminal/file output.
View redirection.txt
|| visible in terminal || visible in file || existing
Syntax || StdOut | StdErr || StdOut | StdErr || file
> || no | yes || yes | no || overwrite
>> || no | yes || yes | no || append
|| | || | ||
2> || yes | no || no | yes || overwrite
2>> || yes | no || no | yes || append
|| | || | ||
&> || no | no || yes | yes || overwrite
View benford_generator.rb
r = rand
wteuber / trace.rb
Created Aug 17, 2017
View trace.rb
set_trace_func -> (event, file, line, id, binding, classname) do
if event == 'call' && meth = binding.eval('__method__')
params = binding.method(meth){|e| e[0] != :block}
values ={|_, var| [var, binding.local_variable_get(var)]}
printf "%8s %s:%-2d %15s %8s %s\n", event, file, line, id, classname, values.inspect
printf "%8s %s:%-2d %15s %8s\n", event, file, line, id, classname
wteuber / rubocop_stable_auto_correct.rb
Created Jun 2, 2017 — forked from florianpilz/rubocop_stable_auto_correct.rb
Script to check & commit all stable auto-corrections of Rubocop
View rubocop_stable_auto_correct.rb
require 'fileutils'
# TODO get list of Cops that support auto-correct
# for each cop, run the following
# only commit if change was stable
# (each run takes ~2 minutes)
prefix = ARGV[0]
files = Dir["#{prefix}/**/*.rb"].sort
orig = Hash[ do |file|
FileUtils.cp(file, "#{file}.orig")
[file, %x(ruby --dump insns #{file}).gsub(/\s+\(\s*\d+\)$/, '')]
wteuber /
Last active Jan 27, 2017
Convert mov to gif (made for QuickTime Player screen recordings)
#! /usr/bin/env bash
if [ -f "$1" ]; then
echo "ffmpeg -i $1 -vcodec copy -acodec copy $1.mp4 ..."
ffmpeg -i $1 -vcodec copy -acodec copy $1.mp4
echo "ERROR: Could not find $1"
if [ \( $? -eq 0 \) -a \( -f $1.mp4 \) ]; then
wteuber / memo.rb
Created Jan 11, 2017 — forked from LeFnord/memo.rb
ruby memoization benchmarks
View memo.rb
require "benchmark"
class A
def name
@name ||= begin

Subtree merging and you

If you’re using Git, you’re probably aware of submodules. They’re useful when you want to integrate and track another Git repository into your own. But there are two other options at your disposal.

The first one is to simply merge the other repository. This works fine as long as there are no conflicting files, but chances are there already are or will be in the future, which makes this option not too useful.

This is where the subtree merge strategy comes in. It allows you to merge another repository (let’s call it “Project B”) into your own, but into its own subdirectory. It takes a bit of effort to set everything up the first time, but after that a pull from the other repository is all that is needed to update.

Here’s how you set it up. First you need to add Project B as a remote:

You can’t perform that action at this time.