Consider the following typescript:
$ git clone git@github.com:laravel/framework.git
$ cd framework
$ git log --all --oneline --graph --decorate
...
| * | | | | | 07bb4d7 fix
| * | | | | | 0c2b7da Use the current timestamp as a default.
| * | | | | | 26cd65e (tag: v5.2.7) increment version
$ git show 0c2b7da
commit 0c2b7da2635f7bbbaf63d1b93fa817232bdd9d65
Author: Taylor Otwell <taylorotwell@gmail.com>
Date: Thu Jan 7 08:01:39 2016 -0600
Use the current timestamp as a default.
diff --git a/src/Illuminate/Database/Schema/Blueprint.php b/src/Illuminate/Database/Schema/Blueprint.php
index fca8e89..7e179aa 100755
--- a/src/Illuminate/Database/Schema/Blueprint.php
+++ b/src/Illuminate/Database/Schema/Blueprint.php
@@ -791,9 +791,9 @@ class Blueprint
*/
public function timestamps()
{
- $this->timestamp('created_at');
+ $this->timestamp('created_at')->useCurrent();
- $this->timestamp('updated_at');
+ $this->timestamp('updated_at')->useCurrent();
}
/**
$ git log -p -m --full-history 07bb4d7 -Stimestamp src/Illuminate/Database/Schema/Blueprint.php
You won't see this commit in the output of the last command. But if you do:
$ git log -p origin/master -Stimestamp src/Illuminate/Database/Schema/Blueprint.php
You'll see this one:
commit 720a116897a4cc6780fa22f34d30c5986eafc581
Author: Taylor Otwell <taylorotwell@gmail.com>
Date: Wed Feb 3 08:13:22 2016 -0600
make timestamps nullable by default
diff --git a/src/Illuminate/Database/Schema/Blueprint.php b/src/Illuminate/Database/Schema/Blueprint.php
index fca8e89..6cfab6f 100755
--- a/src/Illuminate/Database/Schema/Blueprint.php
+++ b/src/Illuminate/Database/Schema/Blueprint.php
@@ -779,9 +779,7 @@ class Blueprint
*/
public function nullableTimestamps()
{
- $this->timestamp('created_at')->nullable();
-
- $this->timestamp('updated_at')->nullable();
+ return $this->timestamps();
}
/**
@@ -791,9 +789,9 @@ class Blueprint
*/
public function timestamps()
{
- $this->timestamp('created_at');
+ $this->timestamp('created_at')->nullable();
- $this->timestamp('updated_at');
+ $this->timestamp('updated_at')->nullable();
}
/**
@@ -803,9 +801,9 @@ class Blueprint
*/
public function timestampsTz()
{
- $this->timestampTz('created_at');
+ $this->timestampTz('created_at')->nullable();
- $this->timestampTz('updated_at');
+ $this->timestampTz('updated_at')->nullable();
}
/**
What am I doing wrong? How do I find commits that change method timestamps
?
From the documentation for git log
(but with my emphasis added):
-S<string>
Look for differences that change the number of occurrences of the specified string (i.e. addition/deletion) in a file. Intended for the scripter’s use.
The commit not shown has the same number of occurrences of the word timestamp
in both versions (before the change, and after). The actual use of the word is different, but the number of occurrences is the same.
The commit that is shown changes the number of occurrences: the first diff-hunk replaces two copies of the word timestamp
with just one copy of the word timestamp
(two literal timestamp
words are replaced with one timestamp
-inside-the-word-timestamps
).
You almost certainly want, instead, the -G
flag, which is described immediately below the -S
flag. Note that -G
takes a regular expression, rather than a simple string, though the word timestamp
has no regex characters in it so for this case there is no difference. (But you might want to use --perl-regexp
to get full Perl style regular expressions, so that you can search for \btimestamp\b
, meaning "the word timestamp but surrounded by non-word characters", i.e., don't match timestamps
or thetimestamp
or twotimestamps
, all of which contain timestamp
.)