2016-12-30 2 views
0

Tenir compte de la tapuscrit suivante:`git -S` ne trouve pas tous les engage

$ git clone [email protected]: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 <[email protected]> 
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 

Vous ne verrez pas cette validation dans la sortie de la dernière commande. Mais si vous le faites:

$ git log -p origin/master -Stimestamp src/Illuminate/Database/Schema/Blueprint.php 

Vous verrez celui-ci:

commit 720a116897a4cc6780fa22f34d30c5986eafc581 
Author: Taylor Otwell <[email protected]> 
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(); 
    } 

    /** 

Qu'est-ce que je fais mal? Comment puis-je trouver commits qui changent la méthode timestamps?

Répondre

2

De the documentation for git log (mais avec mon accent ajouté):

-S<string>

            Rechercher des différences qui changent le nombre d'occurrences de la chaîne spécifiée (c.-à-plus/suppression) dans un fichier. Destiné à l'utilisation du scripteur.

COMMIT ne figure pas a le même nombre d'occurrences du mottimestamp dans les deux versions (avant le changement, et après). L'utilisation réelle du mot est différente, mais le nombre d'occurrences est le même.

Le commit que est montré modifie le nombre d'occurrences: la première diff-gros morceau remplace deux copies du mot timestamp avec juste une copie du mot timestamp (deux timestamp littérales mots sont remplacés par un timestamp -inside- le mot timestamps).

Vous voulez certainement, à la place, le drapeau -G, qui est décrit immédiatement sous le drapeau -S. Notez que -G prend une expression régulière, plutôt qu'une simple chaîne, bien que le mot timestamp ne comporte aucun caractère regex alors, dans ce cas, il n'y a pas de différence. (Mais vous pouvez utiliser --perl-regexp pour obtenir des expressions régulières de style Perl, de sorte que vous pouvez rechercher \btimestamp\b, ce qui signifie «l'horodatage des mots mais entouré de caractères non-mots», c'est-à-dire ne correspondent pas timestamps ou thetimestamp ou twotimestamps, tous ceux-ci contiennenttimestamp.)