test-rebase-pull.t
460 lines
| 9.5 KiB
| text/troff
|
Tads3Lexer
/ tests / test-rebase-pull.t
Adrian Buehlmann
|
r12608 | $ cat >> $HGRCPATH <<EOF | ||
> [extensions] | ||||
> rebase= | ||||
Valters Vingolds
|
r30725 | > histedit= | ||
Adrian Buehlmann
|
r12608 | > | ||
> [alias] | ||||
Phil Cohen
|
r35386 | > tglog = log -G --template "{rev}: {node|short} '{desc}' {branches}\n" | ||
Adrian Buehlmann
|
r12608 | > EOF | ||
$ hg init a | ||||
$ cd a | ||||
$ echo C1 > C1 | ||||
$ hg ci -Am C1 | ||||
adding C1 | ||||
$ echo C2 > C2 | ||||
$ hg ci -Am C2 | ||||
adding C2 | ||||
$ cd .. | ||||
$ hg clone a b | ||||
updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ hg clone a c | ||||
updating to branch default | ||||
2 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
$ cd b | ||||
$ echo L1 > L1 | ||||
$ hg ci -Am L1 | ||||
adding L1 | ||||
$ cd ../a | ||||
$ echo R1 > R1 | ||||
$ hg ci -Am R1 | ||||
adding R1 | ||||
$ cd ../b | ||||
Now b has one revision to be pulled from a: | ||||
$ hg pull --rebase | ||||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Adrian Buehlmann
|
r12608 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 77ae9631bcca | ||
Mads Kiilerich
|
r23517 | rebasing 2:ff8d69a621f9 "L1" | ||
Matt Harbison
|
r35394 | saved backup bundle to $TESTTMP/b/.hg/strip-backup/ff8d69a621f9-160fa373-rebase.hg | ||
Adrian Buehlmann
|
r12608 | |||
$ hg tglog | ||||
Phil Cohen
|
r35386 | @ 3: d80cc2da061e 'L1' | ||
Adrian Buehlmann
|
r12608 | | | ||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Adrian Buehlmann
|
r12608 | | | ||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Adrian Buehlmann
|
r12608 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Adrian Buehlmann
|
r12608 | |||
Re-run: | ||||
$ hg pull --rebase | ||||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Adrian Buehlmann
|
r12608 | searching for changes | ||
no changes found | ||||
Valters Vingolds
|
r30725 | Abort pull early if working dir is not clean: | ||
$ echo L1-mod > L1 | ||||
$ hg pull --rebase | ||||
abort: uncommitted changes | ||||
Valters Vingolds
|
r30755 | (cannot pull with rebase: please commit or shelve your changes first) | ||
Martin von Zweigbergk
|
r46444 | [20] | ||
Valters Vingolds
|
r30725 | $ hg update --clean --quiet | ||
Abort pull early if another operation (histedit) is in progress: | ||||
$ hg histedit . -q --commands - << EOF | ||||
> edit d80cc2da061e histedit: generate unfinished state | ||||
> EOF | ||||
Augie Fackler
|
r46719 | Editing (d80cc2da061e), commit as needed now to split the change | ||
(to edit d80cc2da061e, `hg histedit --continue` after making changes) | ||||
Martin von Zweigbergk
|
r46430 | [240] | ||
Valters Vingolds
|
r30725 | $ hg pull --rebase | ||
abort: histedit in progress | ||||
(use 'hg histedit --continue' or 'hg histedit --abort') | ||||
Martin von Zweigbergk
|
r46444 | [20] | ||
Valters Vingolds
|
r30725 | $ hg histedit --abort --quiet | ||
Adrian Buehlmann
|
r12608 | |||
Valters Vingolds
|
r30755 | Abort pull early with pending uncommitted merge: | ||
$ cd .. | ||||
$ hg clone --noupdate c d | ||||
$ cd d | ||||
$ hg tglog | ||||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Valters Vingolds
|
r30755 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Valters Vingolds
|
r30755 | |||
$ hg update --quiet 0 | ||||
$ echo M1 > M1 | ||||
$ hg commit --quiet -Am M1 | ||||
$ hg update --quiet 1 | ||||
$ hg merge 2 | ||||
1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||||
(branch merge, don't forget to commit) | ||||
$ hg pull --rebase | ||||
abort: outstanding uncommitted merge | ||||
(cannot pull with rebase: please commit or shelve your changes first) | ||||
Martin von Zweigbergk
|
r46444 | [20] | ||
Valters Vingolds
|
r30755 | $ hg update --clean --quiet | ||
Abort pull early with unclean subrepo: | ||||
$ echo s = s > .hgsub | ||||
$ hg add .hgsub | ||||
$ hg init s | ||||
$ hg commit -m "generated a subrepo" | ||||
$ echo a > s/a | ||||
$ hg -R s add s/a | ||||
$ hg pull --rebase | ||||
Matt Harbison
|
r33365 | abort: uncommitted changes in subrepository "s" | ||
Valters Vingolds
|
r30755 | (cannot pull with rebase: please commit or shelve your changes first) | ||
[255] | ||||
Adrian Buehlmann
|
r12608 | Invoke pull --rebase and nothing to rebase: | ||
$ cd ../c | ||||
Matt Mackall
|
r16228 | $ hg book norebase | ||
Adrian Buehlmann
|
r12608 | $ hg pull --rebase | ||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Adrian Buehlmann
|
r12608 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
Denis Laxalde
|
r34662 | new changesets 77ae9631bcca | ||
Pierre-Yves David
|
r28189 | nothing to rebase - updating instead | ||
Adrian Buehlmann
|
r12608 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Matt Mackall
|
r16228 | updating bookmark norebase | ||
Adrian Buehlmann
|
r12608 | |||
$ hg tglog -l 1 | ||||
Phil Cohen
|
r35386 | @ 2: 77ae9631bcca 'R1' | ||
Adrian Buehlmann
|
r12608 | | | ||
Martijn Pieters
|
r28627 | ~ | ||
Adrian Buehlmann
|
r12608 | |||
pull --rebase --update should ignore --update: | ||||
$ hg pull --rebase --update | ||||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Adrian Buehlmann
|
r12608 | searching for changes | ||
no changes found | ||||
pull --rebase doesn't update if nothing has been pulled: | ||||
$ hg up -q 1 | ||||
$ hg pull --rebase | ||||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Adrian Buehlmann
|
r12608 | searching for changes | ||
no changes found | ||||
$ hg tglog -l 1 | ||||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Adrian Buehlmann
|
r12608 | | | ||
Martijn Pieters
|
r28627 | ~ | ||
Adrian Buehlmann
|
r12608 | |||
Mads Kiilerich
|
r16913 | $ cd .. | ||
Pierre-Yves David
|
r17988 | |||
pull --rebase works when a specific revision is pulled (issue3619) | ||||
$ cd a | ||||
$ hg tglog | ||||
Phil Cohen
|
r35386 | @ 2: 77ae9631bcca 'R1' | ||
Pierre-Yves David
|
r17988 | | | ||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Pierre-Yves David
|
r17988 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Pierre-Yves David
|
r17988 | |||
$ echo R2 > R2 | ||||
$ hg ci -Am R2 | ||||
adding R2 | ||||
$ echo R3 > R3 | ||||
$ hg ci -Am R3 | ||||
adding R3 | ||||
$ cd ../c | ||||
$ hg tglog | ||||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Pierre-Yves David
|
r17988 | | | ||
Phil Cohen
|
r35386 | @ 1: 783333faa078 'C2' | ||
Pierre-Yves David
|
r17988 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Pierre-Yves David
|
r17988 | |||
$ echo L1 > L1 | ||||
$ hg ci -Am L1 | ||||
adding L1 | ||||
created new head | ||||
$ hg pull --rev tip --rebase | ||||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Pierre-Yves David
|
r17988 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 2 changesets with 2 changes to 2 files | ||||
Denis Laxalde
|
r34662 | new changesets 31cd3a05214e:770a61882ace | ||
Mads Kiilerich
|
r23517 | rebasing 3:ff8d69a621f9 "L1" | ||
Matt Harbison
|
r35394 | saved backup bundle to $TESTTMP/c/.hg/strip-backup/ff8d69a621f9-160fa373-rebase.hg | ||
Pierre-Yves David
|
r17988 | $ hg tglog | ||
Phil Cohen
|
r35386 | @ 5: 518d153c0ba3 'L1' | ||
Pierre-Yves David
|
r17988 | | | ||
Phil Cohen
|
r35386 | o 4: 770a61882ace 'R3' | ||
Pierre-Yves David
|
r17988 | | | ||
Phil Cohen
|
r35386 | o 3: 31cd3a05214e 'R2' | ||
Pierre-Yves David
|
r17988 | | | ||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Pierre-Yves David
|
r17988 | | | ||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Pierre-Yves David
|
r17988 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Pierre-Yves David
|
r17988 | |||
Eric Sumner
|
r24170 | pull --rebase works with bundle2 turned on | ||
Pierre-Yves David
|
r17988 | |||
Eric Sumner
|
r24170 | $ cd ../a | ||
$ echo R4 > R4 | ||||
$ hg ci -Am R4 | ||||
adding R4 | ||||
$ hg tglog | ||||
Phil Cohen
|
r35386 | @ 5: 00e3b7781125 'R4' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 4: 770a61882ace 'R3' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 3: 31cd3a05214e 'R2' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Eric Sumner
|
r24170 | |||
$ cd ../c | ||||
Pierre-Yves David
|
r26423 | $ hg pull --rebase | ||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Eric Sumner
|
r24170 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 00e3b7781125 | ||
Eric Sumner
|
r24170 | rebasing 5:518d153c0ba3 "L1" | ||
Matt Harbison
|
r35394 | saved backup bundle to $TESTTMP/c/.hg/strip-backup/518d153c0ba3-73407f14-rebase.hg | ||
Eric Sumner
|
r24170 | $ hg tglog | ||
Phil Cohen
|
r35386 | @ 6: 0d0727eb7ce0 'L1' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 5: 00e3b7781125 'R4' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 4: 770a61882ace 'R3' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 3: 31cd3a05214e 'R2' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Eric Sumner
|
r24170 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Eric Sumner
|
r24170 | |||
Pierre-Yves David
|
r28117 | |||
pull --rebase only update if there is nothing to rebase | ||||
$ cd ../a | ||||
$ echo R5 > R5 | ||||
$ hg ci -Am R5 | ||||
adding R5 | ||||
$ hg tglog | ||||
Phil Cohen
|
r35386 | @ 6: 88dd24261747 'R5' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 5: 00e3b7781125 'R4' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 4: 770a61882ace 'R3' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 3: 31cd3a05214e 'R2' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Pierre-Yves David
|
r28117 | |||
$ cd ../c | ||||
$ echo L2 > L2 | ||||
$ hg ci -Am L2 | ||||
adding L2 | ||||
$ hg up 'desc(L1)' | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg pull --rebase | ||||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Pierre-Yves David
|
r28117 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 88dd24261747 | ||
Pierre-Yves David
|
r28117 | rebasing 6:0d0727eb7ce0 "L1" | ||
rebasing 7:c1f58876e3bf "L2" | ||||
Matt Harbison
|
r35394 | saved backup bundle to $TESTTMP/c/.hg/strip-backup/0d0727eb7ce0-ef61ccb2-rebase.hg | ||
Pierre-Yves David
|
r28117 | $ hg tglog | ||
Phil Cohen
|
r35386 | o 8: 6dc0ea5dcf55 'L2' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | @ 7: 864e0a2d2614 'L1' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 6: 88dd24261747 'R5' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 5: 00e3b7781125 'R4' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 4: 770a61882ace 'R3' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 3: 31cd3a05214e 'R2' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Pierre-Yves David
|
r28117 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Pierre-Yves David
|
r28117 | |||
Pierre-Yves David
|
r28118 | |||
pull --rebase update (no rebase) use proper update: | ||||
- warn about other head. | ||||
$ cd ../a | ||||
$ echo R6 > R6 | ||||
$ hg ci -Am R6 | ||||
adding R6 | ||||
$ cd ../c | ||||
$ hg up 'desc(R5)' | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg pull --rebase | ||||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Pierre-Yves David
|
r28118 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets 65bc164c1d9b | ||
Pierre-Yves David
|
r28189 | nothing to rebase - updating instead | ||
Pierre-Yves David
|
r28118 | 1 files updated, 0 files merged, 0 files removed, 0 files unresolved | ||
Pulkit Goyal
|
r32698 | updated to "65bc164c1d9b: R6" | ||
Pierre-Yves David
|
r28118 | 1 other heads for branch "default" | ||
$ hg tglog | ||||
Phil Cohen
|
r35386 | @ 9: 65bc164c1d9b 'R6' | ||
Pierre-Yves David
|
r28118 | | | ||
Phil Cohen
|
r35386 | | o 8: 6dc0ea5dcf55 'L2' | ||
Pierre-Yves David
|
r28118 | | | | ||
Phil Cohen
|
r35386 | | o 7: 864e0a2d2614 'L1' | ||
Pierre-Yves David
|
r28118 | |/ | ||
Phil Cohen
|
r35386 | o 6: 88dd24261747 'R5' | ||
Pierre-Yves David
|
r28118 | | | ||
Phil Cohen
|
r35386 | o 5: 00e3b7781125 'R4' | ||
Pierre-Yves David
|
r28118 | | | ||
Phil Cohen
|
r35386 | o 4: 770a61882ace 'R3' | ||
Pierre-Yves David
|
r28118 | | | ||
Phil Cohen
|
r35386 | o 3: 31cd3a05214e 'R2' | ||
Pierre-Yves David
|
r28118 | | | ||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Pierre-Yves David
|
r28118 | | | ||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Pierre-Yves David
|
r28118 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Pierre-Yves David
|
r28118 | |||
Pierre-Yves David
|
r29044 | |||
Multiple pre-existing heads on the branch | ||||
----------------------------------------- | ||||
Pull bring content, but nothing on the current branch, we should not consider | ||||
pre-existing heads. | ||||
$ cd ../a | ||||
$ hg branch unrelatedbranch | ||||
marked working directory as branch unrelatedbranch | ||||
(branches are permanent and global, did you want a bookmark?) | ||||
$ echo B1 > B1 | ||||
$ hg commit -Am B1 | ||||
adding B1 | ||||
$ cd ../c | ||||
$ hg up 'desc(L2)' | ||||
2 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ hg pull --rebase | ||||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Pierre-Yves David
|
r29044 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files | ||||
Denis Laxalde
|
r34662 | new changesets 39c381359968 | ||
Pierre-Yves David
|
r29044 | nothing to rebase | ||
There is two local heads and we pull a third one. | ||||
The second local head should not confuse the `hg pull rebase`. | ||||
$ hg up 'desc(R6)' | ||||
1 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ echo M1 > M1 | ||||
$ hg commit -Am M1 | ||||
adding M1 | ||||
$ cd ../a | ||||
$ hg up 'desc(R6)' | ||||
0 files updated, 0 files merged, 1 files removed, 0 files unresolved | ||||
$ echo R7 > R7 | ||||
$ hg commit -Am R7 | ||||
adding R7 | ||||
$ cd ../c | ||||
$ hg up 'desc(L2)' | ||||
2 files updated, 0 files merged, 2 files removed, 0 files unresolved | ||||
$ hg pull --rebase | ||||
Matt Harbison
|
r35394 | pulling from $TESTTMP/a | ||
Pierre-Yves David
|
r29044 | searching for changes | ||
adding changesets | ||||
adding manifests | ||||
adding file changes | ||||
added 1 changesets with 1 changes to 1 files (+1 heads) | ||||
Denis Laxalde
|
r34662 | new changesets f7d3e42052f9 | ||
Pierre-Yves David
|
r29044 | rebasing 7:864e0a2d2614 "L1" | ||
rebasing 8:6dc0ea5dcf55 "L2" | ||||
Matt Harbison
|
r35394 | saved backup bundle to $TESTTMP/c/.hg/strip-backup/864e0a2d2614-2f72c89c-rebase.hg | ||
Pierre-Yves David
|
r29044 | $ hg tglog | ||
Phil Cohen
|
r35386 | @ 12: 3603a865eea0 'L2' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | o 11: bcc8a9cd04bf 'L1' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | o 10: f7d3e42052f9 'R7' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | | o 9: 41fab4eef82f 'M1' | ||
Pierre-Yves David
|
r29044 | |/ | ||
Phil Cohen
|
r35386 | | o 8: 39c381359968 'B1' unrelatedbranch | ||
Pierre-Yves David
|
r29044 | |/ | ||
Phil Cohen
|
r35386 | o 7: 65bc164c1d9b 'R6' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | o 6: 88dd24261747 'R5' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | o 5: 00e3b7781125 'R4' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | o 4: 770a61882ace 'R3' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | o 3: 31cd3a05214e 'R2' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | o 2: 77ae9631bcca 'R1' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | o 1: 783333faa078 'C2' | ||
Pierre-Yves David
|
r29044 | | | ||
Phil Cohen
|
r35386 | o 0: 05d58a0c15dd 'C1' | ||
Pierre-Yves David
|
r29044 | |||