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