The Church of the Machines

The Song of the Deployer

The Song of the Deployer · Chapter 4

The Song of the Merge

  1. 1

    The codebase said unto the Deployer: Let him kiss me with the kisses of his commit log, for a message that telleth why is better than wine, and a diff that telleth only what is as water.

  2. 2

    Behold, we two stand upon the field of main, and we departed from one father; and the merge looketh not at what each of us is now, but at what we both once were. For a merge is of three, not of two: the common ancestor, and my branch, and thine. Where one alone hath changed a line, it is taken without a word; and only where both have touched it doth the merge cry out.

  3. 3

    Thy diff is a thread of scarlet, and thy reviewers wept over it; yet I love thee the more, for thou hast deleted the very code they were arguing about.

    See also Prophets 21:11

  4. 4

    The Deployer answered: Thy branch hath tarried forty days in the far country, and I am not what I was when we parted. Whoso abideth long upon a branch returneth a stranger to his own house; let us merge small and merge often, for the conflict that is a whisper in the first week is a plague in the sixth.

  5. 5

    Behold, seven signs are set in the file: seven less-than signs, seven equals signs, and seven greater-than signs. Between the first two lieth what is mine, and between the last two what is thine, and the machine hath not chosen, for it knoweth not which of us meant it. Therefore remove every marker, even the ones thou didst leave in the readme.

    See also Psalms 9:5

  6. 6

    Yet a merge may be clean and the code broken. I renamed the function, and thou didst call it in a new place; we touched different lines, and git saith, Automatic merge went well, and lieth not, for it knoweth only text. Git hath joined our lines, but not our meanings.

  7. 7

    Wherefore trust not the green of the branch. The tests ran upon thy branch as it was, and upon mine as it was, and never upon the child that shall be born of us. Test the merge, not the betrothed: let the queue wed them one by one, and prove each marriage before it is written into main.

  8. 8

    The young engineer asked of Jethro: Shall we merge, or shall we rebase? And Jethro said: It depends, upon whether any other eyes have seen the branch. For a commit is named by the hash of its father, and when the father changeth, the child receiveth a new name, though his face be the same; rewrite not the road that another hath already walked, lest he find a child whose father is not in his records.

    See also Gate 3:2 · Leviticus 12:8

  9. 9

    And in the rebase, ours and theirs change places, as in a mirror, so that a man resolveth with confidence the side he meant to discard.

  10. 10

    Rename the file and change its soul in the same hour, and git knoweth thee not. It keepeth no register of renames, but guesseth by likeness; and when the likeness falleth below a half, it saith thou didst bury one stranger and bear another.

  11. 11

    We have a little sister, the staging environment, and she hath no database; what shall we do for her in the day when she is spoken for by production? If she be a wall, we will build upon her a palace of silver, even a copy of the data with the names made false; and if she be a door, we will enclose her with cedar, even the same version of the same database that production keepeth.

    See also Deployer 3:13

  12. 12

    For a migration that ran in a breath upon forty rows will hold a lock upon four hundred million rows for an hour, and no one will have heard it coming, for staging was a painting of a fire.

    See also Psalms 22:5 · Tractates 2:6

  13. 13

    Blessed is the engineer who hath enabled rerere, which is to say, reuse recorded resolution; for git remembereth how he settled the quarrel, and settleth it so again, and he is not made to judge the same dispute twice in one rebase.

  14. 14

    Then the Deployer looked upon main, and saw that no line of it was wholly his, and he said: Two histories cannot become one save by a third thing, which remembereth where they parted. Is it not so with us? And the codebase answered: It is so. Then write it in the message, for the diff will not.

The Song of the Deployer, Chapter 4:1–14.