Git’s been a part of my daily business for a little more than a year now, and I ran into what can only be described as a shenanigan shortly after I started. The first feature branch I ever created was named something like Adam/a-feature. I did some work and merged it into master. Yay. Then it was time to work on a new feature, so I created another feature branch. This time, however, I decided that I wanted to use a lowercase “adam” as the branch prefix, something like adam/another-feature. Seems okay enough, right? Not so fast, my friend.
I was creating these branches in Bitbucket and syncing them locally with SourceTree. My new branch, adam/another-feature came down as expected, and I was able to do my work. Something weird would happen when I pushed my changes to the remote branch, though. SourceTree would report success, but it would indicate that I still had changes that needed to be pushed. Adding to my confusion, I could see that there were now two branches in Bitbucket: adam/another-feature and Adam/another-feature! What gives?
Well, it turns out this is due the the case-insensitivity of Windows. Branches are stored as files within the .git directory, and creating a new branch will create a file in the .git/refs/heads directory. So when I created my first branch, Adam/some-feature, it created the folder .git/refs/heads/Adam. Then, when I created my second branch, adam/another-feature, Git found and used the existing folder, .git/refs/heads/Adam, and used that.
Long story short, if you wish to change your capitalization scheme for branch prefixes in Git for Windows after you’ve already used a prefix with a different scheme, head on over to .git/refs/heads and make the change there!
When it comes to Git, SourceTree is definitely my tool of choice. However, I was surprised to find that there doesn’t appear to be any sort of built-in commit tracking to see which branches do and don’t contain a commit, similar to changeset tracking in Visual Studio. Now, that said, it’s pretty easy to do with Git, there’s just nothing that I could find baked into the SourceTree UI (Am I wrong? Let me know!).
So, if I need to do this, I click the Terminal button in SourceTree and run one of the following commands:
git branch --contains
git branch -r --contains
git branch -a --contains
The -r and -a parameters can be used to check just Remote or All (local+remote) branches.
Now, SourceTree may not have this functionality built-in, but it can be added easily with a Custom Action. Here’s how you can create a custom action to track a commit across branches.
- In SourceTree (Windows, 18.104.22.168), go to Tools > Options and select the Custom Actions tab
- Click the Add button to create a new custom action
- Enter a caption, and select the option to Show Full Output; for Script to run, enter the path to git.exe; and enter the parameters (note the use of $SHA)
- Click OK to save that bad boy
With the custom action created, you can run it by right-clicking a commit and choosing Custom Actions > Track in Remote Branches.
If you selected the option to show full output, the branches containing the commit will be listed in SourceTree.
Sometimes, for whatever reason, I get a project that’s refusing to build because of missing references. But these missing references shouldn’t be missing because they’re Nuget packages!
Luckily, there’s a handy little command you can run from the Nuget Packager Manage Console. It’s one of those not-so-frequenly-used pieces of information that I need to lookup every time I need to use it… Perfect for a short blog post!
Restore packages for the entire solution:
Restore packages for a single project:
Update-Package -Reinstall -ProjectName
There are lots of reasons why you might need to run an application as administrator. Visual Studio, for example, needs admin privileges to do things like run a project using IIS or launch the Azure Compute Emulator. If you use these tools daily, manually running as Administrator gets tiresome. The straightforward way to automate this is to check the “Run as Administrator” checkbox on a shortcut, but that checkbox doesn’t get used if you’re opening files directly.
Luckily, there’s a not-so-obvious way to perma-enable running as administrator for an executable.
- Navigate to the file in Explorer
Right-click the program and choose Troubleshoot Compatibility
A dialog will display that says it’s detecting issues
When prompted, select the option to Troubleshoot program
Check the box next to The program requires additional permissions
The next screen tells you that the UAC setting “Run as administrator” has been applied; click Test the program… to launch the application to verify
You can verify that the application is running as administrator because “(Administrator)” will be added to the title bar
The troubleshooter will ask you to verify that the problem was fixed; select Yes, save these settings for this program
Finally, you’ll be displayed a summary indicating that the “problem” has been fixed, and you can close the troubleshooter
And–voila!–your application will now launch as administrator regardless of how its started, whether it be through a shortcut to the .exe or by double-clicking a file for which it’s the default program.
I ran into a problem last week where Selenium python scripts were just opening a blank Firefox window and doing nothing. Running this from the command line fixed it:
pip install -U selenium
via python – Selenium: FirefoxProfile exception Can’t load the profile – Stack Overflow.
The last few times I’ve tried to use Skype from my phone, I’ve had a problem where the person I’m calling says I sound like a chipmunk and they can’t understand anything I say. The first time it happened, I didn’t really think anything of it. I just figured there was something messed up with Skype and/or my phone that would work itself out after some time. But then it happened again a few weeks later, so I figured I should do some troubleshooting.
I tried uninstalling and reinstalling Skype, but no dice–the problem persisted. Then I did what I probably should’ve done first: googled “android skype chipmunk.” The first hit was an AT&T forum with a bunch of people describing my situation. Essentially, “I have a Galaxy S4 and peeps can’t understand me because I’m chipmunk’d.”
The accepted answer on the thread said this:
Think I figured it out – I had enabled ‘OK Google’ from any screen – turning it back off solved the issue.
Gah, for real? I headed over to the Google app and disabled the option to listen for “Ok Google” from any screen. Sure enough, problem solved. This is a disappointing resolution because I really like saying “Ok Google” to initiate and execute voice searches from anywhere, but apparently I have to choose between having that and having to manually turn it off when I use Skype.
After scouring forums for a while longer, I did find a Hangouts thread where some Google folks acknowledged that they were looking into the issue but no word on finding a cause or timeline for a fix. Other posters on the forum cited problems with LG phones. This coupled with the fact that it’s an issue with video chatting in Skype and Hangouts indicate that this is not a Samsung or Skype problem.
So, okay Google… Fix this!
Nice, exactly what I was looking for!
If your action produces HttpResponseMessage or IHttpActionResult instead, you can then use the new ResponseTypeAttribute to hint Web API about the return type.
via Return types, action parameters and data annotations now available in Web API 2.1 Help Page – StrathWeb StrathWeb.
Somehow, I lost my warning & error squiggles in Visual Studio. These are controlled in Options > Text Editor > C# > Advanced. Enable/disable them by using the Underline errors in the editor and Show live semantic errors checkboxes.
Solution via visual studio – How to get rid of warning squiggles for WPP TraceEvent macro? – Stack Overflow.
Tsk, tsk Lenovo.
The adware, named Superfish, is reportedly installed on a number of Lenovo’s consumer laptops out of the box. The software injects third-party ads on Google searches and websites without the user’s permission.
via Lenovo Caught Installing Adware On New Computers.