github.com/ungtb10d/git-lfs@v2.5.2+incompatible/t/t-migrate-info.sh (about)

     1  #!/usr/bin/env bash
     2  
     3  . "$(dirname "$0")/fixtures/migrate.sh"
     4  . "$(dirname "$0")/testlib.sh"
     5  
     6  begin_test "migrate info (default branch)"
     7  (
     8    set -e
     9  
    10    setup_multiple_local_branches
    11  
    12    original_head="$(git rev-parse HEAD)"
    13  
    14    diff -u <(git lfs migrate info 2>&1 | tail -n 2) <(cat <<-EOF
    15  	*.md 	140 B	1/1 files(s)	100%
    16  	*.txt	120 B	1/1 files(s)	100%
    17  	EOF)
    18  
    19    migrated_head="$(git rev-parse HEAD)"
    20  
    21    assert_ref_unmoved "HEAD" "$original_head" "$migrated_head"
    22  )
    23  end_test
    24  
    25  begin_test "migrate info (bare repository)"
    26  (
    27    set -e
    28  
    29    setup_multiple_remote_branches
    30  
    31    git lfs migrate info --everything
    32  )
    33  end_test
    34  
    35  begin_test "migrate info (given branch)"
    36  (
    37    set -e
    38  
    39    setup_multiple_local_branches
    40  
    41    original_master="$(git rev-parse refs/heads/master)"
    42    original_feature="$(git rev-parse refs/heads/my-feature)"
    43  
    44    diff -u <(git lfs migrate info my-feature 2>&1 | tail -n 2) <(cat <<-EOF
    45  	*.md 	170 B	2/2 files(s)	100%
    46  	*.txt	120 B	1/1 files(s)	100%
    47  	EOF)
    48  
    49    migrated_master="$(git rev-parse refs/heads/master)"
    50    migrated_feature="$(git rev-parse refs/heads/my-feature)"
    51  
    52    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
    53    assert_ref_unmoved "refs/heads/my-feature" "$original_feature" "$migrated_feature"
    54  )
    55  end_test
    56  
    57  begin_test "migrate info (default branch with filter)"
    58  (
    59    set -e
    60  
    61    setup_multiple_local_branches
    62  
    63    original_head="$(git rev-parse HEAD)"
    64  
    65    diff -u <(git lfs migrate info --include "*.md" 2>&1 | tail -n 1) <(cat <<-EOF
    66  	*.md	140 B	1/1 files(s)	100%
    67  	EOF)
    68  
    69    migrated_head="$(git rev-parse HEAD)"
    70  
    71    assert_ref_unmoved "refs/heads/master" "$original_head" "$migrated_head"
    72  )
    73  end_test
    74  
    75  begin_test "migrate info (given branch with filter)"
    76  (
    77    set -e
    78  
    79    setup_multiple_local_branches
    80  
    81    original_master="$(git rev-parse refs/heads/master)"
    82    original_feature="$(git rev-parse refs/heads/my-feature)"
    83  
    84    diff -u <(git lfs migrate info --include "*.md" my-feature 2>&1 | tail -n 1) <(cat <<-EOF
    85  	*.md	170 B	2/2 files(s)	100%
    86  	EOF)
    87  
    88    migrated_master="$(git rev-parse refs/heads/master)"
    89    migrated_feature="$(git rev-parse refs/heads/my-feature)"
    90  
    91    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
    92    assert_ref_unmoved "refs/heads/my-feature" "$original_feature" "$migrated_feature"
    93  )
    94  end_test
    95  
    96  begin_test "migrate info (default branch, exclude remote refs)"
    97  (
    98    set -e
    99  
   100    setup_single_remote_branch
   101  
   102    git show-ref
   103  
   104    original_remote="$(git rev-parse refs/remotes/origin/master)"
   105    original_master="$(git rev-parse refs/heads/master)"
   106  
   107    diff -u <(git lfs migrate info 2>&1 | tail -n 2) <(cat <<-EOF
   108  	*.md 	50 B	1/1 files(s)	100%
   109  	*.txt	30 B	1/1 files(s)	100%
   110  	EOF)
   111  
   112    migrated_remote="$(git rev-parse refs/remotes/origin/master)"
   113    migrated_master="$(git rev-parse refs/heads/master)"
   114  
   115    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
   116    assert_ref_unmoved "refs/remotes/origin/master" "$original_remote" "$migrated_remote"
   117  )
   118  end_test
   119  
   120  begin_test "migrate info (given branch, exclude remote refs)"
   121  (
   122    set -e
   123  
   124    setup_multiple_remote_branches
   125  
   126    original_remote="$(git rev-parse refs/remotes/origin/master)"
   127    original_master="$(git rev-parse refs/heads/master)"
   128    original_feature="$(git rev-parse refs/heads/my-feature)"
   129  
   130    diff -u <(git lfs migrate info my-feature 2>&1 | tail -n 2) <(cat <<-EOF
   131  	*.md 	52 B	2/2 files(s)	100%
   132  	*.txt	50 B	2/2 files(s)	100%
   133  	EOF)
   134  
   135    migrated_remote="$(git rev-parse refs/remotes/origin/master)"
   136    migrated_master="$(git rev-parse refs/heads/master)"
   137    migrated_feature="$(git rev-parse refs/heads/my-feature)"
   138  
   139    assert_ref_unmoved "refs/remotes/origin/master" "$original_remote" "$migrated_remote"
   140    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
   141    assert_ref_unmoved "refs/heads/my-feature" "$original_feature" "$migrated_feature"
   142  )
   143  end_test
   144  
   145  begin_test "migrate info (given ref, --skip-fetch)"
   146  (
   147    set -e
   148  
   149    setup_single_remote_branch
   150  
   151    original_remote="$(git rev-parse refs/remotes/origin/master)"
   152    original_master="$(git rev-parse refs/heads/master)"
   153  
   154    git tag pseudo-remote "$original_remote"
   155    # Remove the refs/remotes/origin/master ref, and instruct 'git lfs migrate' to
   156    # not fetch it.
   157    git update-ref -d refs/remotes/origin/master
   158  
   159    diff -u <(git lfs migrate info --skip-fetch 2>&1 | tail -n 2) <(cat <<-EOF
   160  	*.md 	190 B	2/2 files(s)	100%
   161  	*.txt	150 B	2/2 files(s)	100%
   162  	EOF)
   163  
   164    migrated_remote="$(git rev-parse pseudo-remote)"
   165    migrated_master="$(git rev-parse refs/heads/master)"
   166  
   167    assert_ref_unmoved "refs/remotes/origin/master" "$original_remote" "$migrated_remote"
   168    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
   169  )
   170  end_test
   171  
   172  begin_test "migrate info (include/exclude ref)"
   173  (
   174    set -e
   175  
   176    setup_multiple_remote_branches
   177  
   178    original_master="$(git rev-parse refs/heads/master)"
   179    original_feature="$(git rev-parse refs/heads/my-feature)"
   180  
   181    diff -u <(git lfs migrate info \
   182      --include-ref=refs/heads/my-feature \
   183      --exclude-ref=refs/heads/master 2>&1 | tail -n 2) <(cat <<-EOF
   184  	*.md 	31 B	1/1 files(s)	100%
   185  	*.txt	30 B	1/1 files(s)	100%
   186  	EOF)
   187  
   188    migrated_master="$(git rev-parse refs/heads/master)"
   189    migrated_feature="$(git rev-parse refs/heads/my-feature)"
   190  
   191    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
   192    assert_ref_unmoved "refs/heads/my-feature" "$original_feature" "$migrated_feature"
   193  )
   194  end_test
   195  
   196  begin_test "migrate info (include/exclude ref args)"
   197  (
   198    set -e
   199  
   200    setup_multiple_remote_branches
   201  
   202    original_master="$(git rev-parse refs/heads/master)"
   203    original_feature="$(git rev-parse refs/heads/my-feature)"
   204  
   205    diff -u <(git lfs migrate info \
   206      my-feature ^master 2>&1 | tail -n 2) <(cat <<-EOF
   207  	*.md 	31 B	1/1 files(s)	100%
   208  	*.txt	30 B	1/1 files(s)	100%
   209  	EOF)
   210  
   211    migrated_master="$(git rev-parse refs/heads/master)"
   212    migrated_feature="$(git rev-parse refs/heads/my-feature)"
   213  
   214    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
   215    assert_ref_unmoved "refs/heads/my-feature" "$original_feature" "$migrated_feature"
   216  )
   217  end_test
   218  
   219  begin_test "migrate info (include/exclude ref with filter)"
   220  (
   221    set -e
   222  
   223    setup_multiple_remote_branches
   224  
   225    original_master="$(git rev-parse refs/heads/master)"
   226    original_feature="$(git rev-parse refs/heads/my-feature)"
   227  
   228    diff -u <(git lfs migrate info \
   229      --include="*.txt" \
   230      --include-ref=refs/heads/my-feature \
   231      --exclude-ref=refs/heads/master 2>&1 | tail -n 1) <(cat <<-EOF
   232  	*.txt	30 B	1/1 files(s)	100%
   233  	EOF)
   234  
   235    migrated_master="$(git rev-parse refs/heads/master)"
   236    migrated_feature="$(git rev-parse refs/heads/my-feature)"
   237  
   238    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
   239    assert_ref_unmoved "refs/heads/my-feature" "$original_feature" "$migrated_feature"
   240  )
   241  end_test
   242  
   243  begin_test "migrate info (nested sub-trees, no filter)"
   244  (
   245    set -e
   246  
   247    setup_single_local_branch_deep_trees
   248  
   249    original_master="$(git rev-parse refs/heads/master)"
   250  
   251    diff -u <(git lfs migrate info 2>/dev/null) <(cat <<-EOF
   252  	*.txt	120 B	1/1 files(s)	100%
   253  	EOF)
   254  
   255    migrated_master="$(git rev-parse refs/heads/master)"
   256  
   257    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
   258  )
   259  end_test
   260  
   261  begin_test "migrate info (above threshold)"
   262  (
   263    set -e
   264  
   265    setup_multiple_local_branches
   266  
   267    original_head="$(git rev-parse HEAD)"
   268  
   269    diff -u <(git lfs migrate info --above=130B 2>&1 | tail -n 1) <(cat <<-EOF
   270  	*.md	140 B	1/1 files(s)	100%
   271  	EOF)
   272  
   273    migrated_head="$(git rev-parse HEAD)"
   274  
   275    assert_ref_unmoved "HEAD" "$original_head" "$migrated_head"
   276  )
   277  end_test
   278  
   279  begin_test "migrate info (above threshold, top)"
   280  (
   281    set -e
   282  
   283    setup_multiple_local_branches
   284  
   285    original_head="$(git rev-parse HEAD)"
   286  
   287    diff -u <(git lfs migrate info --above=130B --top=1 2>&1 | tail -n 1) <(cat <<-EOF
   288  	*.md	140 B	1/1 files(s)	100%
   289  	EOF)
   290  
   291    migrated_head="$(git rev-parse HEAD)"
   292  
   293    assert_ref_unmoved "HEAD" "$original_head" "$migrated_head"
   294  )
   295  end_test
   296  
   297  begin_test "migrate info (given unit)"
   298  (
   299    set -e
   300  
   301    setup_multiple_local_branches
   302  
   303    original_head="$(git rev-parse HEAD)"
   304  
   305    diff -u <(git lfs migrate info --unit=kb 2>&1 | tail -n 2) <(cat <<-EOF
   306  	*.md 	0.1	1/1 files(s)	100%
   307  	*.txt	0.1	1/1 files(s)	100%
   308  	EOF)
   309  
   310    migrated_head="$(git rev-parse HEAD)"
   311  
   312    assert_ref_unmoved "HEAD" "$original_head" "$migrated_head"
   313  )
   314  end_test
   315  
   316  begin_test "migrate info (doesn't show empty info entries)"
   317  (
   318    set -e
   319  
   320    setup_multiple_local_branches
   321  
   322    original_head="$(git rev-parse HEAD)"
   323  
   324    [ "0" -eq "$(git lfs migrate info --above=1mb 2>/dev/null | wc -l)" ]
   325  
   326    migrated_head="$(git rev-parse HEAD)"
   327  
   328    assert_ref_unmoved "HEAD" "$original_head" "$migrated_head"
   329  )
   330  end_test
   331  
   332  begin_test "migrate info (empty set)"
   333  (
   334    set -e
   335  
   336    setup_multiple_local_branches
   337  
   338    migrate="$(git lfs migrate info \
   339      --include-ref=refs/heads/master \
   340      --exclude-ref=refs/heads/master 2>/dev/null
   341    )"
   342  
   343    [ "0" -eq "$(echo -n "$migrate" | wc -l | awk '{ print $1 }')" ]
   344  )
   345  end_test
   346  
   347  begin_test "migrate info (--everything)"
   348  (
   349    set -e
   350  
   351    setup_multiple_local_branches
   352    git checkout master
   353  
   354    original_master="$(git rev-parse refs/heads/master)"
   355    original_feature="$(git rev-parse refs/heads/my-feature)"
   356  
   357    diff -u <(git lfs migrate info --everything 2>&1 | tail -n 2) <(cat <<-EOF
   358  	*.md 	170 B	2/2 files(s)	100%
   359  	*.txt	120 B	1/1 files(s)	100%
   360  	EOF)
   361  
   362    migrated_master="$(git rev-parse refs/heads/master)"
   363    migrated_feature="$(git rev-parse refs/heads/my-feature)"
   364  
   365    assert_ref_unmoved "refs/heads/master" "$original_master" "$migrated_master"
   366    assert_ref_unmoved "refs/heads/my-feature" "$original_feature" "$migrated_feature"
   367  )
   368  end_test
   369  
   370  begin_test "migrate info (ambiguous reference)"
   371  (
   372    set -e
   373  
   374    setup_multiple_local_branches
   375  
   376    # Create an ambiguously named reference sharing the name as the SHA-1 of
   377    # "HEAD".
   378    sha="$(git rev-parse HEAD)"
   379    git tag "$sha"
   380  
   381    git lfs migrate info --everything
   382  )
   383  end_test
   384  
   385  begin_test "migrate info (--everything with args)"
   386  (
   387    set -e
   388  
   389    setup_multiple_local_branches
   390  
   391    [ "$(git lfs migrate info --everything master 2>&1)" = \
   392      "fatal: cannot use --everything with explicit reference arguments" ]
   393  )
   394  end_test
   395  
   396  begin_test "migrate info (--everything with --include-ref)"
   397  (
   398    set -e
   399  
   400    setup_multiple_local_branches
   401  
   402    [ "$(git lfs migrate info --everything --include-ref=refs/heads/master 2>&1)" = \
   403      "fatal: cannot use --everything with --include-ref or --exclude-ref" ]
   404  )
   405  end_test
   406  
   407  exit 0
   408  
   409  begin_test "migrate info (--everything with --exclude-ref)"
   410  (
   411    set -e
   412  
   413    setup_multiple_local_branches
   414  
   415    [ "$(git lfs migrate info --everything --exclude-ref=refs/heads/master 2>&1)" = \
   416      "fatal: cannot use --everything with --include-ref or --exclude-ref" ]
   417  )
   418  end_test