Pivotal Labs

Main menu

Skip to primary content
Skip to secondary content
  • About
  • Case Studies
  • Team
    • Executives
    • Locations
      • San Francisco (HQ)
      • Boston
      • Boulder
      • Denver
      • London
      • Los Angeles
      • New York
  • Community
    • Blogs
    • Tech Talks
    • Events
  • Careers
    • Lifestyle
    • Principles & Practices
    • Benefits
    • FAQ
    • Apply
  • Contact
    • Press Room
    • Press Releases
    • In The News
    • Press Kit
  • All
  • Labs
  • Standup
  • Tracker

Valentine's Day (2/14/11) Standup: Git Rebasing and NodeJS package manager issue

Pivotal Labs
Monday, February 14, 2011

Overview

  • “Could someone quickly explain the pros and cons of using git rebase over git merge?“

  • “Has anyone had a problem with NodeJS not seeing libraries installed with its package manager npm?”

Answers

“Could someone quickly explain the pros and cons of using git rebase over git merge?”

A few points pivots brought up:

  • Rebase gives you a pretty line of history without the merge commits. Merging causes the history to grow horizontally as you add pairs to the team.
  • Doing forensics (e.g. git bisect) on changes made by others can be a very manual process without rebasing.
  • Merges have the upside of showing what really happens. In a conceptual sense, you really are working in parallel tracks and stitching the tracks together.
  • Rebasing is good because you’re rewriting history to clean things up. You can fix mistakes in prior commits or commits messages.
  • But then again, who really cares? Is the extra effort needed to learn and apply the complexities of a rebase workflow worth the gain?
  • Also, RubyMine has a rebase feature but it’s caused problems for some pivots. Be very careful when you’re letting a tool like RubyMine make big changes like a rebase to your repo.

More info about git rebasing: http://book.git-scm.com/4_rebasing.html

“Has anyone had a problem with NodeJS not seeing libraries installed with its package manager npm?”

Another pivot had encountered this issue before and suggested adding the NODE_PATH variable to the user’s bash environment:

export NODE_PATH=”/usr/local/lib/node”

This solved the issue. Of course, your own node location may be different. The pivot experiencing this issue installed node from Homebrew.

  • 0 Shares
  • Share on Facebook
  • Share on Twitter

4 Comments

  1. Scott Windsor says:

    As a rule of thumb, don’t rebase.

    Rebasing essentially re-applies your changes to the HEAD. This can be useful for certain situations, like providing a patch to a big upstream project (like rails) without having extra merge commits.

    The danger comes into play when you begin to re-write your previous history that you’ve already pushed. This can lead to all sorts of bad things, like commits getting re-applied.

    February 14, 2011 at 6:52 pm

  2. Joseph Palermo says:

    My main problem with rabasing:

    If I screw up a conflict when I’m doing a merge it is no problem. I can inspect my original commits, and the merge, and see what I did wrong.

    If I screw up a conflict when I’m doing a rebase my original history is gone, I only have the broken state of the world, and it’s possible I have no idea what I did originally.

    February 14, 2011 at 8:48 pm

  3. Elia says:

    We use`git pull –rebase` in our (small) environment and works pretty well. It’s also somehow simpler to understand for newcomers and makes the commit history more readable.

    Also I often use `git rebase –interactive –autosquash origin/master` to make my commits more readable for my teammates (and myself).

    The only downside we sometimes encounter is that multiple commits changing a file that’s changed also on master require nearly identical resolutions to be applied as many times.

    February 15, 2011 at 5:24 am

  4. Tim Connor says:

    Palermo: reflog. That is, of course, sub-optimal, but you do have to try really hard to actually lose something outright.

    February 15, 2011 at 7:52 pm

Add New Comment Cancel reply

Your email address will not be published.

Pivotal Labs

Pivotal Labs

Recent Posts

  • Does the set of all sets contain itself?
  • Standup 3/8/2012
  • Standup 3/7/2012
Subscribe to Pivotal's Feed

Author Topics

riddles (1)
agile (167)
capistrano (2)
rails (26)
movember (1)
git (10)
railsdoc (1)
object-design (1)
bdd (3)
cucumber (3)
linkedin (1)
oauth (1)
ruby (17)
tdd (2)
lvh.me (1)
rails 3.1.1 (1)
selenium (6)
homebrew (1)
mysql (5)
rvm (1)
sproutcore (1)
paperclip (2)
pry (1)
amazon (1)
heroku (1)
rails3 (2)
jasmine (3)
design (3)
process (12)
productivity (8)
learning (1)
olin (1)
migrations (2)
mongodb (2)
devise (2)
javascript (13)
rubymine (4)
ipad (1)
whurl (1)
head.js (1)
pairing (2)
tools (4)
pair programming (1)
rspec (10)
rspec2 (1)
ruby19 (1)
incubation (3)
startup (5)
api (1)
presenter (1)
vanna (1)
pivotal tracker (5)
capybara (1)
fakeweb (1)
webmock (1)
intern (1)
ruby on rails (25)
meetup (1)
textmate (1)
testing (20)
solr (4)
nyc-standup (11)
community (1)
opensource (3)
activerecord (4)
chrome (1)
mp4 (1)
activeresource (1)
flash (3)
neo4j (1)
nginx (1)
rsoc (1)
meta programming (1)
agile standup (7)
government (3)
webos (4)
xss (1)
jquery (1)
bundler (2)
ci (3)
gems (5)
postgresql (1)
geminstaller (1)
gemcutter (1)
cloud (2)
rack (2)
refraction (1)
gem (5)
refactoring (1)
validations (1)
webrat (1)
engine-yard (1)
firefox (2)
jsunit (1)
mongrel (2)
thin (1)
unicorn (1)
facebook (1)
rubygems (5)
jruby (1)
actioncontroller (1)
rails 2.3 (1)
palmpre (1)
autotest (1)
mac (2)
hosting (1)
goruco (11)
database (3)
railsconf (11)
gogaruco (4)
deployment (4)
github (1)
ie (1)
ajax (1)
intellij (1)
json (1)
asset packaging (1)
polonium (1)
character encoding (1)
utf-8 (1)
test (3)
civics (1)
hpricot (1)
rake (3)
sms (1)
unicode (1)
iphone (1)
java (1)
safari (1)
memory leaks (1)
rr (3)
editor (1)
css (1)
nyc (3)
performance (5)
fun (5)
enterprise rails (1)
health (1)
new and cool (1)
general (2)
treetop (1)
errors (1)
stack (1)
trace (1)
cache (1)
cookies (1)
freesoftware (1)
conferences (1)
development (1)
driven (1)
proxy (1)
caching (1)
peertopatent (1)
languages (1)
rest (2)
rubyforge (1)
sake (1)
file (1)
upload (1)
constants (1)
osx (1)
terminal (1)
pairprogramming (2)
  • About
  • Case Studies
  • Team
  • Community
  • Careers
  • Contact
  • Labs
  • Events

Contact Us

contact@pivotallabs.com
+1 415-77-PIVOT
TwitterLinkedInFacebook

Pivotal Tracker

Tracker is the award-winning agile project management tool that enables real-time collaboration around a shared, prioritized backlog.
Visit pivotaltracker.com >