tests/test-git-interop.t
author Pulkit Goyal <7895pulkit@gmail.com>
Fri, 24 Jul 2020 16:18:39 +0530
changeset 45282 b442920ab1de
parent 44951 83e41b73d115
child 45423 d4cf80341589
permissions -rw-r--r--
merge: introduce mergeresult.addfile() and use it We want to use mergeresult object at more and more places instead of this actions dict to simplify code and further add new APIs to mergeresult object. This patch introduces `addfile()` which adds a new file to the internal actions dict for now. Differential Revision: https://phab.mercurial-scm.org/D8820
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
44483
2e464925f662 hghave: add a check for pygit2
Martin von Zweigbergk <martinvonz@google.com>
parents: 44478
diff changeset
     1
#require pygit2
44477
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
     2
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
     3
Setup:
44493
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
     4
  $ GIT_AUTHOR_NAME='test'; export GIT_AUTHOR_NAME
44477
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
     5
  > GIT_AUTHOR_EMAIL='test@example.org'; export GIT_AUTHOR_EMAIL
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
     6
  > GIT_AUTHOR_DATE="2007-01-01 00:00:00 +0000"; export GIT_AUTHOR_DATE
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
     7
  > GIT_COMMITTER_NAME="$GIT_AUTHOR_NAME"; export GIT_COMMITTER_NAME
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
     8
  > GIT_COMMITTER_EMAIL="$GIT_AUTHOR_EMAIL"; export GIT_COMMITTER_EMAIL
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
     9
  > GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"; export GIT_COMMITTER_DATE
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    10
  > count=10
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    11
  > gitcommit() {
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    12
  >    GIT_AUTHOR_DATE="2007-01-01 00:00:$count +0000";
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    13
  >    GIT_COMMITTER_DATE="$GIT_AUTHOR_DATE"
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    14
  >    git commit "$@" >/dev/null 2>/dev/null || echo "git commit error"
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    15
  >    count=`expr $count + 1`
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    16
  >  }
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    17
44493
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    18
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    19
Test auto-loading extension works:
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    20
  $ mkdir nogit
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    21
  $ cd nogit
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    22
  $ mkdir .hg
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    23
  $ echo git >> .hg/requires
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    24
  $ hg status
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    25
  abort: repository specified git format in .hg/requires but has no .git directory
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    26
  [255]
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    27
  $ git init
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    28
  Initialized empty Git repository in $TESTTMP/nogit/.git/
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    29
This status invocation shows some hg gunk because we didn't use
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    30
`hg init --git`, which fixes up .git/info/exclude for us.
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    31
  $ hg status
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    32
  ? .hg/cache/git-commits.sqlite
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    33
  ? .hg/cache/git-commits.sqlite-shm
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    34
  ? .hg/cache/git-commits.sqlite-wal
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    35
  ? .hg/requires
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    36
  $ cd ..
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    37
02c47b74366c git: key off `git` in .hg/requires rather than separate file
Augie Fackler <raf@durin42.com>
parents: 44483
diff changeset
    38
Now globally enable extension for the rest of the test:
44951
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
    39
  $ cat <<EOF >> $HGRCPATH
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
    40
  > [extensions]
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
    41
  > git=
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
    42
  > [git]
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
    43
  > log-index-cache-miss = yes
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
    44
  > EOF
44477
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    45
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    46
Make a new repo with git:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    47
  $ mkdir foo
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    48
  $ cd foo
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    49
  $ git init
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    50
  Initialized empty Git repository in $TESTTMP/foo/.git/
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    51
Ignore the .hg directory within git:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    52
  $ echo .hg >> .git/info/exclude
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    53
  $ echo alpha > alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    54
  $ git add alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    55
  $ gitcommit -am 'Add alpha'
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    56
  $ echo beta > beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    57
  $ git add beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    58
  $ gitcommit -am 'Add beta'
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    59
  $ echo gamma > gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    60
  $ git status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    61
  On branch master
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    62
  Untracked files:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    63
    (use "git add <file>..." to include in what will be committed)
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    64
  	gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    65
  
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    66
  nothing added to commit but untracked files present (use "git add" to track)
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    67
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    68
Without creating the .hg, hg status fails:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    69
  $ hg status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    70
  abort: no repository found in '$TESTTMP/foo' (.hg not found)!
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    71
  [255]
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    72
But if you run hg init --git, it works:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    73
  $ hg init --git
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    74
  $ hg id --traceback
44951
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
    75
  heads mismatch, rebuilding dagcache
44477
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    76
  3d9be8deba43 tip master
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    77
  $ hg status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    78
  ? gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    79
Log works too:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    80
  $ hg log
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    81
  changeset:   1:3d9be8deba43
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    82
  bookmark:    master
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    83
  tag:         tip
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    84
  user:        test <test@example.org>
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    85
  date:        Mon Jan 01 00:00:11 2007 +0000
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    86
  summary:     Add beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    87
  
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    88
  changeset:   0:c5864c9d16fb
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    89
  user:        test <test@example.org>
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    90
  date:        Mon Jan 01 00:00:10 2007 +0000
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    91
  summary:     Add alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    92
  
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    93
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    94
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    95
and bookmarks:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    96
  $ hg bookmarks
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    97
   * master                    1:3d9be8deba43
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    98
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
    99
diff even works transparently in both systems:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   100
  $ echo blah >> alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   101
  $ git diff
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   102
  diff --git a/alpha b/alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   103
  index 4a58007..faed1b7 100644
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   104
  --- a/alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   105
  +++ b/alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   106
  @@ -1* +1,2 @@ (glob)
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   107
   alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   108
  +blah
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   109
  $ hg diff --git
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   110
  diff --git a/alpha b/alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   111
  --- a/alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   112
  +++ b/alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   113
  @@ -1,1 +1,2 @@
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   114
   alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   115
  +blah
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   116
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   117
Remove a file, it shows as such:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   118
  $ rm alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   119
  $ hg status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   120
  ! alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   121
  ? gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   122
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   123
Revert works:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   124
  $ hg revert alpha --traceback
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   125
  $ hg status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   126
  ? gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   127
  $ git status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   128
  On branch master
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   129
  Untracked files:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   130
    (use "git add <file>..." to include in what will be committed)
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   131
  	gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   132
  
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   133
  nothing added to commit but untracked files present (use "git add" to track)
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   134
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   135
Add shows sanely in both:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   136
  $ hg add gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   137
  $ hg status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   138
  A gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   139
  $ hg files
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   140
  alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   141
  beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   142
  gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   143
  $ git ls-files
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   144
  alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   145
  beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   146
  gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   147
  $ git status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   148
  On branch master
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   149
  Changes to be committed:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   150
    (use "git restore --staged <file>..." to unstage)
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   151
  	new file:   gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   152
  
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   153
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   154
forget does what it should as well:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   155
  $ hg forget gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   156
  $ hg status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   157
  ? gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   158
  $ git status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   159
  On branch master
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   160
  Untracked files:
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   161
    (use "git add <file>..." to include in what will be committed)
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   162
  	gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   163
  
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   164
  nothing added to commit but untracked files present (use "git add" to track)
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   165
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   166
clean up untracked file
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   167
  $ rm gamma
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   168
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   169
hg log FILE
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   170
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   171
  $ echo a >> alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   172
  $ hg ci -m 'more alpha' --traceback --date '1583522787 18000'
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   173
  $ echo b >> beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   174
  $ hg ci -m 'more beta'
44951
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
   175
  heads mismatch, rebuilding dagcache
44477
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   176
  $ echo a >> alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   177
  $ hg ci -m 'even more alpha'
44951
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
   178
  heads mismatch, rebuilding dagcache
44477
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   179
  $ hg log -G alpha
44951
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
   180
  heads mismatch, rebuilding dagcache
44477
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   181
  @  changeset:   4:6626247b7dc8
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   182
  :  bookmark:    master
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   183
  :  tag:         tip
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   184
  :  user:        test <test>
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   185
  :  date:        Thu Jan 01 00:00:00 1970 +0000
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   186
  :  summary:     even more alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   187
  :
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   188
  o  changeset:   2:a1983dd7fb19
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   189
  :  user:        test <test>
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   190
  :  date:        Fri Mar 06 14:26:27 2020 -0500
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   191
  :  summary:     more alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   192
  :
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   193
  o  changeset:   0:c5864c9d16fb
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   194
     user:        test <test@example.org>
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   195
     date:        Mon Jan 01 00:00:10 2007 +0000
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   196
     summary:     Add alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   197
  
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   198
  $ hg log -G beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   199
  o  changeset:   3:d8ee22687733
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   200
  :  user:        test <test>
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   201
  :  date:        Thu Jan 01 00:00:00 1970 +0000
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   202
  :  summary:     more beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   203
  :
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   204
  o  changeset:   1:3d9be8deba43
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   205
  |  user:        test <test@example.org>
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   206
  ~  date:        Mon Jan 01 00:00:11 2007 +0000
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   207
     summary:     Add beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   208
  
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   209
44855
1d2d353e5c4a tests: add coverage for repo.changelog.children() in the git extension
Augie Fackler <augie@google.com>
parents: 44854
diff changeset
   210
  $ hg log -r "children(3d9be8deba43)" -T"{node|short} {children}\n"
1d2d353e5c4a tests: add coverage for repo.changelog.children() in the git extension
Augie Fackler <augie@google.com>
parents: 44854
diff changeset
   211
  a1983dd7fb19 3:d8ee22687733
1d2d353e5c4a tests: add coverage for repo.changelog.children() in the git extension
Augie Fackler <augie@google.com>
parents: 44854
diff changeset
   212
44477
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   213
hg annotate
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   214
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   215
  $ hg annotate alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   216
  0: alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   217
  2: a
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   218
  4: a
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   219
  $ hg annotate beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   220
  1: beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   221
  3: b
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   222
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   223
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   224
Files in subdirectories. TODO: case-folding support, make this `A`
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   225
instead of `a`.
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   226
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   227
  $ mkdir a
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   228
  $ echo "This is file mu." > a/mu
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   229
  $ hg ci -A -m 'Introduce file a/mu'
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   230
  adding a/mu
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   231
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   232
Both hg and git agree a/mu is part of the repo
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   233
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   234
  $ git ls-files
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   235
  a/mu
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   236
  alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   237
  beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   238
  $ hg files
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   239
  a/mu
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   240
  alpha
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   241
  beta
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   242
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   243
hg and git status both clean
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   244
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   245
  $ git status
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   246
  On branch master
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   247
  nothing to commit, working tree clean
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   248
  $ hg status
44951
83e41b73d115 git: add debug logging when there's a mismatch in the cached heads list
Augie Fackler <augie@google.com>
parents: 44932
diff changeset
   249
  heads mismatch, rebuilding dagcache
44477
ad718271a9eb git: skeleton of a new extension to _directly_ operate on git repos
Augie Fackler <augie@google.com>
parents:
diff changeset
   250
44478
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   251
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   252
node|shortest works correctly
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   253
  $ hg log -T '{node}\n' | sort
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   254
  3d9be8deba43482be2c81a4cb4be1f10d85fa8bc
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   255
  6626247b7dc8f231b183b8a4761c89139baca2ad
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   256
  a1983dd7fb19cbd83ad5a1c2fc8bf3d775dea12f
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   257
  ae1ab744f95bfd5b07cf573baef98a778058537b
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   258
  c5864c9d16fb3431fe2c175ff84dc6accdbb2c18
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   259
  d8ee22687733a1991813560b15128cd9734f4b48
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   260
  $ hg log -r ae1ab744f95bfd5b07cf573baef98a778058537b --template "{shortest(node,1)}\n"
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   261
  ae
6d953b3fc2bd git: make {shortest()} return shortest *unique* prefix
Martin von Zweigbergk <martinvonz@google.com>
parents: 44477
diff changeset
   262
44854
572f98a6f6af tests: add coverage for repo.changelog.findmissing() in test-git-interop.t
Augie Fackler <augie@google.com>
parents: 44493
diff changeset
   263
This coveres changelog.findmissing()
572f98a6f6af tests: add coverage for repo.changelog.findmissing() in test-git-interop.t
Augie Fackler <augie@google.com>
parents: 44493
diff changeset
   264
  $ hg merge --preview 3d9be8deba43
44932
03ba7de6a8b9 git: add coverage for manifest.diff() so we don't regress
Augie Fackler <augie@google.com>
parents: 44855
diff changeset
   265
03ba7de6a8b9 git: add coverage for manifest.diff() so we don't regress
Augie Fackler <augie@google.com>
parents: 44855
diff changeset
   266
This covers manifest.diff()
03ba7de6a8b9 git: add coverage for manifest.diff() so we don't regress
Augie Fackler <augie@google.com>
parents: 44855
diff changeset
   267
  $ hg diff -c 3d9be8deba43
03ba7de6a8b9 git: add coverage for manifest.diff() so we don't regress
Augie Fackler <augie@google.com>
parents: 44855
diff changeset
   268
  diff -r c5864c9d16fb -r 3d9be8deba43 beta
03ba7de6a8b9 git: add coverage for manifest.diff() so we don't regress
Augie Fackler <augie@google.com>
parents: 44855
diff changeset
   269
  --- /dev/null	Thu Jan 01 00:00:00 1970 +0000
03ba7de6a8b9 git: add coverage for manifest.diff() so we don't regress
Augie Fackler <augie@google.com>
parents: 44855
diff changeset
   270
  +++ b/beta	Mon Jan 01 00:00:11 2007 +0000
03ba7de6a8b9 git: add coverage for manifest.diff() so we don't regress
Augie Fackler <augie@google.com>
parents: 44855
diff changeset
   271
  @@ -0,0 +1,1 @@
03ba7de6a8b9 git: add coverage for manifest.diff() so we don't regress
Augie Fackler <augie@google.com>
parents: 44855
diff changeset
   272
  +beta