<?xml version="1.0" encoding="utf-8"?>
<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom">
    <channel>
        <title>David Mohundro - Developer, Architect, Learner, Dad and more - git tag</title>
        <link>https://mohundro.com/tags/git</link>
        <description>Posts tagged with git</description>
        <lastBuildDate>Tue, 31 Mar 2026 00:42:13 GMT</lastBuildDate>
        <docs>https://validator.w3.org/feed/docs/rss2.html</docs>
        <generator>https://github.com/jpmonette/feed</generator>
        <language>en-us</language>
        <image>
            <title>David Mohundro - Developer, Architect, Learner, Dad and more - git tag</title>
            <url>https://mohundro.com/static/images/me.jpeg</url>
            <link>https://mohundro.com/tags/git</link>
        </image>
        <copyright>All rights reserved 2026, David Mohundro</copyright>
        <atom:link href="https://mohundro.com/tags/git/rss.xml" rel="self" type="application/rss+xml"/>
        <item>
            <title><![CDATA[mani Git Tool to Manage Repos]]></title>
            <link>https://mohundro.com/til/2025-03-28-mani-git-tool/</link>
            <guid isPermaLink="false">https://mohundro.com/til/2025-03-28-mani-git-tool/</guid>
            <pubDate>Fri, 28 Mar 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<p>See https://manicli.com/.</p>
<p>I thought that <code>mani sync</code> would also synchronize all remotes, but it only clones them... if you want to fetch or similar, then you have to set up a task.</p>
<p>Example:</p>
<pre><code>tasks:
  git-status:
    desc: Show working tree status
    cmd: git status
</code></pre>
<p>Then to execute:</p>
<pre><code>mani run git-status --all
</code></pre>
<p>(you have to specify tags or <code>--all</code> or similar... it won't just run automatically against everything)</p>
]]></content:encoded>
            <author>david@mohundro.com (David Mohundro)</author>
        </item>
        <item>
            <title><![CDATA[Git Repository for a Subdirectory]]></title>
            <link>https://mohundro.com/til/2025-01-14-git-repository-for-subdirectory/</link>
            <guid isPermaLink="false">https://mohundro.com/til/2025-01-14-git-repository-for-subdirectory/</guid>
            <pubDate>Tue, 14 Jan 2025 00:00:00 GMT</pubDate>
            <content:encoded><![CDATA[<pre><code>gh repo clone owner/repo
cd repo/
git sparse-checkout init --cone
git sparse-checkout set infrastructure
git co main
git remote remove origin
uv tool install git-filter-repo
git filter-repo --path infrastructure --force
</code></pre>
<p>See <a href="https://chatgpt.com/share/678694ef-0158-800f-b63c-1e0a141c410b">ChatGPT chat</a> for more context.</p>
]]></content:encoded>
            <author>david@mohundro.com (David Mohundro)</author>
        </item>
        <item>
            <title><![CDATA[How I manage my dotfiles]]></title>
            <link>https://mohundro.com/blog/2024-08-03-how-i-manage-my-dotfiles/</link>
            <guid isPermaLink="false">https://mohundro.com/blog/2024-08-03-how-i-manage-my-dotfiles/</guid>
            <pubDate>Sat, 03 Aug 2024 00:00:00 GMT</pubDate>
            <description><![CDATA[I'd like to share how I manage my dotfiles. Are you familiar with dotfiles? According to the Arch Linux wiki:  [dotfiles are] user-specific application...]]></description>
            <content:encoded><![CDATA[<p>I'd like to share how I manage <a href="https://github.com/drmohundro/dotfiles">my dotfiles</a>. Are you familiar with dotfiles? According to the <a href="https://wiki.archlinux.org/title/Dotfiles">Arch Linux wiki</a>:</p>
<blockquote>
<p>[dotfiles are] user-specific application configuration is traditionally stored in so called <a href="https://en.wikipedia.org/wiki/dotfile">dotfiles</a> (files whose filename starts with a dot).</p>
</blockquote>
<h2>dotfiles Overview</h2>
<p>When asked by coworkers, I usually describe them as user config files commonly used in Linux related systems (e.g. Ubuntu, MacOS). On Linux or Mac, your dotfiles live under your <code>$HOME</code> or <code>~</code> directory (which can vary by OS). If you're coming from a Windows background, you may still see dotfiles for your Linux-like tools, though. For example, here are a couple of Windows tools that use dotfiles:</p>
<ul>
<li>Git uses the <code>%USERPROFILE%\.gitconfig</code> (e.g. <code>C:\Users\David\.gitconfig</code>)</li>
<li>Vim uses the <code>%USERPROFILE%\.vimrc</code> (e.g. <code>C:\Users\David\.vimrc</code>)</li>
</ul>
<p>So in this case, <code>%USERPROFILE%</code> corresponds to <code>~</code>, which is what PowerShell uses for its HOME, too. It is probably more common for Windows-specific tools to use the various App Profile directories (<code>%USERPROFILE%\AppData</code>).</p>
<p>Some of the usefulness of dotfiles is storing the configuration in source control, because then you can easily port your customizations and configuration over to other machines. I have my dotfiles set up so that it is cross platform and can be used across Mac, Linux and even Windows.</p>
<h2>My dotfiles setup</h2>
<p>My dotfiles repo is up at <a href="https://github.com/drmohundro/dotfiles">https://github.com/drmohundro/dotfiles</a>. It has my user configuration history from <em>the last fifteen years</em> (see <a href="https://github.com/drmohundro/dotfiles/commit/1d7ba8a">my first commit</a>). At that time, it looks like I was using Vim, playing with Emacs, using <a href="https://beyondgrep.com/">Ack</a>, and still storing my PowerShell files there (though I have since moved them to <a href="https://github.com/drmohundro/PowerShellEnv">their own repository</a>).</p>
<p>Today, 500+ commits later, I've got even more tool configuration. I've still got Vim, but I also added Neovim, Hammerspoon, both Kitty and Wezterm, both oh-my-posh and starship, multiple shell configs (i.e. fish, zsh and bash), and more.</p>
<p>The best part? All it takes for me to set up a new environment is a simple <code>git clone</code> and then an install script.</p>
<p>So first off, why a separate directory plus install script verses just tracking everything directly in your home directory? Some people do prefer to just run <code>git init</code> in their home directory. Personally, I don't like that because I don't want to mess with ignoring tools I don't want to track and the other directories that live there (like <code>Documents</code>, <code>Photos</code>, etc.).</p>
<p>Also, what's the deal with the files not having the <code>.</code> in the name? Is it even dotfiles at this point? I actually found this approach originally from <a href="https://github.com/ryanb/dotfiles">Ryan Bates dotfiles</a>.</p>
<p>One benefit of this approach is that the files <em>aren't hidden</em> (files with <code>.</code> at the beginning are hidden on Mac and Linux). You open your directory, they're right there.</p>
<p>Another benefit is that there is a clear distinction between repository config files and home user config files. What I mean is, I can have a <code>.gitignore</code> or an <code>.editorconfig</code> _for the dotfiles repository, but it isn't for the entire machine like the rest of the dotfiles.</p>
<h2>My Install Script</h2>
<p>My installation script is up at <a href="https://github.com/drmohundro/dotfiles/blob/main/install.ps1">https://github.com/drmohundro/dotfiles/blob/main/install.ps1</a>.</p>
<p>So... why use a PowerShell install script? <em>Especially</em> given that we've already noted that dotfiles are mostly for Linux and Mac?</p>
<p>That's a great question.</p>
<p>So at one point, I used almost the exact same Rakefile that Ryan Bates did <a href="https://github.com/ryanb/dotfiles/commit/770db4a59918f9dee6d2f379721bb05764811a02">it was removed here</a>. In fact, I used almost his identical script until 2020, but then <a href="https://github.com/drmohundro/dotfiles/commit/5199a23df586a169c6f24fc067c3e4df9ccad889">I added a PowerShell script for installation instead</a>.</p>
<p>Why change? One ironic reason is that I wanted an easy cross platform approach. Ruby (and Rake) will work on Windows, but it has historically been pretty painful. And PowerShell Core now runs on Windows, Mac and Linux. Another simpler reason is that I know and like PowerShell.</p>
<p>The final reason is that, as part of my cross platform setup, I wanted to override where some of the directories would be dropped by OS. Let me explain that more.</p>
<p>First off, the script by default just loops (almost) every file, does some logic to determine the target path, and then creates a symbolic link (or Windows junction for directories on Windows). This means I can edit my files in my home or dotfiles directory and the changes are immediately live.</p>
<p>Below is the code for creating the symbolic link (or junction):</p>
<pre><code>    if ($whatIf) {
        log "Linking $($map.Link) to $($map.Target)"
    }
    else {
        if ((Get-Item $map.Target) -is [System.IO.DirectoryInfo] -and $IsWindows) {
            New-Item -Path $_.Link -ItemType Junction -Value $_.Target
        }
        else {
            New-Item -Path $_.Link -ItemType SymbolicLink -Value $_.Target
        }
    }
</code></pre>
<p>Second, I have an <code>overrides.json</code> configuration file at <a href="https://github.com/drmohundro/dotfiles/blob/main/overrides.json">https://github.com/drmohundro/dotfiles/blob/main/overrides.json</a>. This lets me mix things up by OS. For example, on both Mac and Linux, neovim is configured to drop to <code>~/.config/nvim</code>, but on Windows it goes to <code>%LOCALAPPDATA%/nvim/init.vim</code>. Most tools don't have to have any setup, but I like that I can customize when needed.</p>
<p>Finally, I added a <code>-whatIf</code> switch that doesn't actually install or change anything, but just reports what would have happened.</p>
<h2>Alternative Approaches for Managing dotfiles</h2>
<p>If you've researched dotfiles at all, you may have come across other approaches like <a href="https://chezmoi.io/">chezmoi</a> or <a href="https://www.gnu.org/software/stow/">stow</a>. There is a great list of tools at <a href="https://dotfiles.github.io/utilities/">https://dotfiles.github.io/utilities/</a> (along with other resources, too).</p>
<p>If one of those tools works for you, that's totally fine! I find my slightly unique setup works for me, though. And that highlights one of the things I like about dotfiles in general... they reflect the personality of the author.</p>
<h2>Finding Inspiration in Other dotfiles</h2>
<p>The reason I got into dotfiles in the first place was reading up on customizing vim. I'd find blog posts talking about various vim setups and the posts would link to various dotfile repositories. These are <em>great</em> ways to learn the ins and outs of various tools, configurations and more.</p>
<p>A great way to see what's out there is a <a href="https://github.com/search?type=repositories&amp;q=dotfiles">GitHub search for "dotfiles"</a>.</p>
<p>Past that, including the tools you're interested in configuring along with "dotfiles" can go even farther (e.g. fish, zsh, git, nvim, vim, etc.). If you know what the name of the specific dotfile would be, that's even better:</p>
<ul>
<li><code>config.fish</code> for fish</li>
<li><code>.zshrc</code> for zsh</li>
<li><code>.gitconfig</code> for git</li>
<li><code>init.vim</code> or <code>init.lua</code> for neovim</li>
<li><code>.vimrc</code> for vim</li>
</ul>
<h2>Additional Tips</h2>
<p>The main thing I'd suggest for anyone that doesn't already manage their dotfiles is to <em>start small</em>. Think about the sorts of setup you do on new machines (or if you have to SSH to other servers)... is it just your <code>.gitconfig</code> with some git aliases? Or is it just your shell with aliases? Don't try to get fancy with anything. Just start keeping track of those in source.</p>
<p>I find it interesting to look at other people's dotfiles... you can learn a lot about someone:</p>
<ul>
<li>If someone's Vim set up is less than 20 lines long, they're likely a minimalist</li>
<li>If someone's history for their dotfiles only 5-10 commits, they probably don't play with their config much (and they tend to be content with their tools)</li>
<li>If someone has 500+ commits (<em>cough</em> like me <em>cough</em>), then they may spend a weekend playing with a new configuration just for fun.</li>
</ul>
<p>Finally, it is a great way to learn about a new config option or tool. I'll sometimes find a repo with a setup or alias I like, but then I'll look at the root and see a file I don't recognize... I think I learned about Neovim's Lua configuration from dotfiles before I found it in the documentation.</p>
<p>If you have any additional dotfile tips, feel free to let me know!</p>
]]></content:encoded>
            <author>david@mohundro.com (David Mohundro)</author>
        </item>
        <item>
            <title><![CDATA[Converting a Mercurial repository to Git]]></title>
            <link>https://mohundro.com/blog/2013-07-01-converting-a-mercurial-repository-to-git/</link>
            <guid isPermaLink="false">https://mohundro.com/blog/2013-07-01-converting-a-mercurial-repository-to-git/</guid>
            <pubDate>Mon, 01 Jul 2013 00:00:00 GMT</pubDate>
            <description><![CDATA[About three years ago, our team migrated from using Subversion to Mercurial, primarily because of the pain involved with branches. If you've heard the phrase...]]></description>
            <content:encoded><![CDATA[<p>About three years ago, our team migrated from using Subversion to Mercurial,
primarily because of the pain involved with branches. If you've heard the
phrase "tree conflict," then you know what we were dealing with.</p>
<p>We've been <em>very</em> happy with Mercurial since that time. Other than the initial
ramp up time for the team to learn the intricacies of DVCSs, we honestly
haven't had any major issues. What might have taken half a day to work through
now takes minutes.</p>
<p>However, if you've noticed the title, we have now migrated to Git. I'm not
going to spend much time on the "why" except to say that we were standardizing
on a common VCS tool across the enterprise and that the current plan is to use a
commercial Git offering.</p>
<h2>Caveats about our usage of Mercurial</h2>
<p>Before I go through the options that we looked at, I do want to mention some
points about how we were using Mercurial.</p>
<p>First off, we didn't use the standard "First Last {'email@email.com'}" format in
our HG config. Don't ask why, because I don't remember why. Short of rewriting
history, it was something we were stuck with.</p>
<p>Second, there were three years of history from a team of developers. In other
words, the repository was quite large.</p>
<h2>hg-fast-export</h2>
<p>The first option that I researched was <code>hg-fast-export</code> (via
<a href="https://github.com/frej/fast-export">fast-export</a>). It was nice in that you
could pass in an authors mapping file to convert from old name formats to new
name formats.</p>
<p>The basic steps to use it are:</p>
<pre><code>mkdir my-new-repo
cd my-new-repo
git init
hg-fast-export -r ../path/to/hg/repo -A ../authors.txt
</code></pre>
<p>It actually worked fine for our smaller repositories. It did however fail when
I tried to convert our main repository. My guess is that we had a branch
somewhere that had multiple heads or something. I couldn't find the revision
it failed on which suggests to me that a bad commit had been stripped or
something. Not ideal, but something that we had to deal with.</p>
<p>The other issue is that it took <em>hours</em> to convert a large repository. This
wouldn't be a big deal in and of itself except that I couldn't get the
conversion to work on our primary repo.</p>
<h2>hg-git</h2>
<p>Given that <code>hg-fast-export</code> wasn't working well, I then looked into
<a href="http://hg-git.github.io/">hg-git</a>. hg-git was promising in that I thought I'd
be able to set up a git remote and push to it from the existing hg repository;
however, I had issues with that.</p>
<p>I <em>was</em> able to get the <code>hg gexport</code> command working, though. It creates a git
directory under your .hg directory (unless you configure the <code>intree</code> option).
This process worked quite well, but it took <em>eight</em> hours to complete.</p>
<p>Once the conversion happened, I could copy the git directory out, rename it to
.git and I had my local git repository (note that I did have to set the git
<code>core.bare</code> option to false).</p>
<p>At this point, I had gone from a multiple hour long process that didn't work
to a multiple hour long process that did work. Neither was ideal, though,
because I had to tell the team to stop pushing changes while I was converting
the repository. That, or re-run the export again.</p>
<h2>git-remote-hg</h2>
<p>Given that during my one successful run of <code>hg gexport</code>, I had missed some
commits, I decided to do a little more research, which led me to the
<a href="https://github.com/git/git/blob/master/contrib/remote-helpers/git-remote-hg"><code>git-remote-hg</code>
script</a>.
This script will actually be shipping with git at some point, which gives it
some credibility in my book. It works by letting you clone from HG via a URL,
like <code>git clone hg::/path/to/your/repo</code>. Note the leading <code>hg::</code>. The other
nice thing is that, since it is a remote in git, you can continue to pull
updates down.</p>
<p>My favorite thing about git-remote-hg, though, is its speed. It could clone
our entire repository in under 15 minutes.</p>
<p>To get it to work, you just have to drop it in your PATH somewhere. I tried
to get it to work on Windows, but was unsuccessful. I decided to bail and
use it on OSX because 1) OSX was available and 2) I had read a lot of
successes online from people who were using it on OSX. I did have to tweak the
first line of the script to point to my homebrew install of Python, but other
than that, it just worked.</p>
<p>The one issue with git-remote-hg I had is that I couldn't find an effective
means of modifying authors. After the conversion, I could run <code>git filter-branch --env-filter</code> scripts to modify the git authors (<a href="https://help.github.com/articles/changing-author-info">see the GitHub
"changing author info"
link</a>). The problem with
the these scripts is that, as far as I could tell, they only work on one author at a
time and they took about 45 minutes to complete.</p>
<h2>Final solution</h2>
<p>It was at this time that I remembered <a href="http://www.hanselman.com/blog/TheInternetIsNotABlackBoxLookInside.aspx">Scott Hanselman's words that "the
Internet is not a black
box"</a>.
In other words, the git-remote-hg script also is not a black box - it's just a
Python script. Perhaps I could add my own author mapping code and shorten the
feedback loop from hours to minutes.</p>
<p>Basically, I changed the code in the method <code>fixup_user()</code> to have the
following code (with censored users and emails):</p>
<pre><code>found_user = '%s &lt;%s&gt;' % (name, mail)

user_mapping = {
    "Bob &lt;unknown&gt;": "Bob Dev &lt;bob.dev@fakeemail.com&gt;",
    "John &lt;unknown&gt;": "John Doe &lt;john.doe@fakeemail.com&gt;",
    "Jane &lt;unknown&gt;": "Jane Smith &lt;jane.smith@fakeemail.com&gt;",
}

try:
    mapped_author = user_mapping[found_user]
    found_user = mapped_author
except KeyError:
    warn("Couldn't find user mapping for %s" % found_user)

return found_user
</code></pre>
<p>Finally, success! The best part was that I had a repeatable process that ran
quickly! Once that was complete, I was able to successfully push the
repository to the new remote that I had set up.</p>
]]></content:encoded>
            <author>david@mohundro.com (David Mohundro)</author>
        </item>
        <item>
            <title><![CDATA[Some tips on using git with Windows]]></title>
            <link>https://mohundro.com/blog/2010-02-04-some-tips-on-using-git-with-windows/</link>
            <guid isPermaLink="false">https://mohundro.com/blog/2010-02-04-some-tips-on-using-git-with-windows/</guid>
            <pubDate>Thu, 04 Feb 2010 00:00:00 GMT</pubDate>
            <description><![CDATA[The .NET open source community has really started to embrace git in the past few months. Ayende has moved pretty much all of his open source work over to...]]></description>
            <content:encoded><![CDATA[<p>The .NET open source community has really started to embrace
<a href="http://www.git-scm.com/">git</a> in the past few months.
<a href="http://github.com/ayende">Ayende</a> has moved pretty much all of his open source
work over to <a href="http://github.com/">github</a>, <a href="http://github.com/jagregory/fluent-nhibernate">Fluent NHibernate is
there</a>, <a href="http://github.com/DarthFubuMVC/fubumvc">FubuMVC is
there</a>, the list just goes on. If you
haven't had a chance to delve into git (or other <a href="http://en.wikipedia.org/wiki/Distributed_revision_control">distributed
SCM</a> tools like
mercurial), you should definitely check one of them out.</p>
<p>If you're like most .NET developers, chances are quite high that you're
developing on Windows. In case you're unaware, git was originally written to
manage the Linux source code. What this means is that it has a very different
philosophy than your standard Windows application. For one, it is primarily
used from the command line. And yes, I realize that a plethora of various GUI
tools for git exist. The only one I personally use is gitk, though, and only
then to get a high level view of the repository. The rest of the time, I use it
entirely from the command line (Powershell actually). I wanted to share some
tips on using git in Windows and making the experience better. (note that this
isn't a "git tutorial," it's a "setting git up on Windows tutorial.")</p>
<h2>Install MSysgit</h2>
<p>First off, you have two options for running git in Windows -
<a href="http://code.google.com/p/msysgit/">msysgit</a> or
<a href="http://www.cygwin.com/">cygwin</a>. I've used both, but I currently prefer using
msysgit, mainly because when I'm on Windows, I want to use Powershell. Most
posts you'll read from Windows users using git actually use Git Bash that ships
with msysgit, though. I've used this option as well, but as I said, I like my
Powershell. If you want to use git from any command prompt (including cmd, git
bash, or powershell), you'll want to choose the option to add the git directory
to your path when you install msysgit. (you might have to restart before the
PATH changes are effective)</p>
<p>After the install, you can verify things are set up correctly by pulling up
powershell and typing get-command git. If everything was installed correctly,
you should see something like this:</p>
<p><img src="/static/images/blog/WindowsLiveWriter/SometipsonusinggitwithWindows_BECE/image_2.png" alt="Get-Command git" /></p>
<p>You can now type <code>git --version</code> to verify that the install worked. Mine
outputs "git version 1.6.5.1.msysgit.1".</p>
<h2>Use Console2</h2>
<p>The next step is one of the most important ones in my opinion. Don't use the
default cmd.exe. Use a better one. I recommend
<a href="http://sourceforge.net/projects/console/">Console2</a>. It's a tabbed console
host for windows. You can use it to host the standard cmd prompt, powershell,
cygwin, git bash, etc. It has <em>much</em> better font and color support, too. None
of this <a href="http://www.google.com/search?q=cmd.exe%20consolas">adding fonts to the registry so that cmd.exe can use Consolas
mess</a>. Here's what mine
looks like:</p>
<p><img src="/static/images/blog/WindowsLiveWriter/SometipsonusinggitwithWindows_BECE/image_4.png" alt="Console2" /></p>
<p>I've customized my colors so that the black is more of a dark gray and some of
the other colors aren't quite as bold. I've changed my font to Consolas, I've
got the menu, toolbar and status bar hidden, I have copy on cursor select
checked, and more. Some people don't care about aesthetics when coding or using
the command prompt, but I do.</p>
<h2>Enable color with git</h2>
<p>Speaking of aesthetics, I cringe every time I see someone run git status and
see no color. I don't think I knew how big of a difference existed until I ran
git on an Ubuntu VM where color support is enabled out of the box. Here, I'll
just show you a couple screenshots for comparison.</p>
<p>Without color...</p>
<p><img src="/static/images/blog/WindowsLiveWriter/SometipsonusinggitwithWindows_BECE/image_8.png" alt="Without color" /></p>
<p>With color!</p>
<p><img src="/static/images/blog/WindowsLiveWriter/SometipsonusinggitwithWindows_BECE/image_10.png" alt="With color!" /></p>
<p>Now, if you've used git, you may be aware of the git config option (or see
~/.gitconfig) to turn color on. I actually have mine set to auto. This means
that git tries to determine, based on your terminal, if it thinks you can
handle color or not. It doesn't think Windows can handle color very well, so
auto on Windows means no color. So, if I'm not using the global color option,
what am I doing to tell git to use color anyway? I'm using an environment
variable tweak that I learned about via one of the <a href="http://code.google.com/p/msysgit/issues/detail?id=326&amp;q=color&amp;colspec=ID%20Type%20Status%20Priority%20Component%20Owner%20Summary#c5">msysgit issues</a>).
Here's the line from my powershell profile:</p>
<pre><code>$env:TERM = 'cygwin'
$env:LESS = 'FRSX'
</code></pre>
<p>This line basically lies about the running terminal - "hi git, my terminal
isn't actually powershell or cmd.exe or console2, it's actually cygwin." The
second line provides arguments to less (the default git pager) on how to render
its output.</p>
<p>Here's how this changes things...</p>
<p>Before:</p>
<p><img src="/static/images/blog/WindowsLiveWriter/SometipsonusinggitwithWindows_BECE/image_16.png" alt="Before the ENV variables" /></p>
<p>After!</p>
<p><img src="/static/images/blog/WindowsLiveWriter/SometipsonusinggitwithWindows_BECE/image_18.png" alt="After the ENV variables" /></p>
<p>It's pretty clear now what's changed.</p>
<h2>What's could still improve?</h2>
<p>The only thing I'm currently missing from git when using it via Powershell now
is the tab completion. Git provides a bash_completion script so that you can
tab complete all of the various commands, the branch names when switching
between branches, the various file names when adding or removing, etc. I've
started to create my own version of tab completion when using Powershell by
tweaking PowerTab (Gaurav Sharma started the initial research to do this...
check out his post at
<a href="http://techblogging.wordpress.com/2008/10/13/context-sensitive-auto-completion-using-powershell-powertab-and-git/">http://techblogging.wordpress.com/2008/10/13/context-sensitive-auto-completion-using-powershell-powertab-and-git/</a>)
but it isn't yet nearly as powerful as what the bash_completion script provides
when using a bash terminal. I'm hopeful that future versions of Powershell will
provide a better (easier?) way to hook tab completion up, particularly for
utilities that aren't Powershell-aware. The TabExpansion function is a little
too global for my taste - unless I'm missing something, if you want to add to
the tab completion functionality that already exists, you pretty much have to
re-implement all of the tab completion functionality.</p>
<p>That's pretty much it. Don't be afraid of the command line and don't be afraid
of command line tools.</p>
<p><strong>EDIT:</strong> added the <code>$env:LESS</code> setting - just setting TERM doesn't seem to work
in all cases.</p>
]]></content:encoded>
            <author>david@mohundro.com (David Mohundro)</author>
        </item>
    </channel>
</rss>