Page 1 of 1
Git rebase fails on ZFS dataset
Posted:
Mon Nov 07, 2016 11:54 am
by calvinhp
Hi All,
I've moved all of my development environment over to ZFS on my MacBook Pro. I was doing a `git rebase` last week and I'm getting a log of whitespace related errors and the rebase will fail and leave my changes in the branch in a large patch file.
I moved the repository over to my HFS+ partition and the rebase ran flawlessly. I made a new `zpool` with the recommended switches from the wiki and copied the repo there and it failed like my normal ZFS pool.
As a last test, I moved the repository to a FreeBSD machine onto a ZFS dataset there. I performed the `git rebase` and it worked flawlessly there as well.
It seems at first glance to be related to OpenZFS on OSX and possibly related to filenames and whitespace. Anyone else seeing this?
Thanks,
Calvin
Re: Git rebase fails on ZFS dataset
Posted:
Mon Nov 07, 2016 4:13 pm
by lundman
This is quite interesting. Do you have some simple steps, perhaps from a public repository, that would show this issue?
Re: Git rebase fails on ZFS dataset
Posted:
Tue Nov 08, 2016 8:06 am
by calvinhp
Luckily, I am able to reproduce it in a public repo:
- Code: Select all
┌─ 10:59 Tue, Nov 08──/Volumes/pool/Projects/playground──┐
│
└─ alpha%── git clone git@github.com:quicksilver/Quicksilver.git
Cloning into 'Quicksilver'...
remote: Counting objects: 36748, done.
remote: Total 36748 (delta 0), reused 0 (delta 0), pack-reused 36748
Receiving objects: 100% (36748/36748), 118.93 MiB | 19.33 MiB/s, done.
Resolving deltas: 100% (24033/24033), done.
┌─ 10:59 Tue, Nov 08──/Volumes/pool/Projects/playground──┐
│
└─ alpha%── cd Quicksilver
┌─ 11:01 Tue, Nov 08──/Volumes/pool/Projects/playground/Quicksilver──┐
│ (master | ✔)
└─ alpha%── git checkout -b timed-tasks origin/timed-tasks
Branch timed-tasks set up to track remote branch timed-tasks from origin.
Switched to a new branch 'timed-tasks'
┌─ 11:01 Tue, Nov 08──/Volumes/pool/Projects/playground/Quicksilver──┐
│ (timed-tasks | ✔)
└─ alpha%── git rebase master
fatal: Needed a single revision
First, rewinding head to replay your work on top of it...
Applying: add delayed commands to the task viewer
Applying: factor out code for setting up task and timer
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
error: Your local changes to the following files would be overwritten by merge:
Quicksilver/Code-QuickStepCore/QSCommand.m
Please commit your changes or stash them before you merge.
Aborting
error: Failed to merge in the changes.
Patch failed at 0002 factor out code for setting up task and timer
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
If I abort this rebase and move the repo to HFS+, the rebase will complete successfully.
Re: Git rebase fails on ZFS dataset
Posted:
Mon Nov 14, 2016 7:01 pm
by lundman
Hmm
- Code: Select all
bash-3.2# git clone https://github.com/quicksilver/Quicksilver.git
Cloning into 'Quicksilver'...
remote: Counting objects: 36748, done.
remote: Total 36748 (delta 0), reused 0 (delta 0), pack-reused 36748
Receiving objects: 100% (36748/36748), 118.93 MiB | 410.00 KiB/s, done.
Resolving deltas: 100% (24033/24033), done.
Checking connectivity... done.
bash-3.2# cd Quicksilver
bash-3.2# git checkout -b timed-tasks origin/timed-tasks
Branch timed-tasks set up to track remote branch timed-tasks from origin.
Switched to a new branch 'timed-tasks'
bash-3.2# git rebase master
First, rewinding head to replay your work on top of it...
Applying: add delayed commands to the task viewer
Applying: factor out code for setting up task and timer
Applying: update deployment target for the Task NIBs
bash-3.2# git status
On branch timed-tasks
Your branch and 'origin/timed-tasks' have diverged,
and have 58 and 4 different commits each, respectively.
(use "git pull" to merge the remote branch into yours)
nothing to commit, working directory clean
So perhaps it is something we have already fixed since your version. If you are not up for testing/compiling master directly, give it a go once we get the next version released.
I have also tried running 1.5.2 and could not reproduce, which version of O3X are you running? What are your pool and dataset settings (casesensitivity and normalization). As well as your git version.
Re: Git rebase fails on ZFS dataset
Posted:
Tue Nov 15, 2016 6:38 am
by calvinhp
I'm running version 1.5.2
- Code: Select all
zfs:
Version: 1.5.2
Last Modified: 4/29/16, 3:34 AM
Bundle ID: net.lundman.zfs
Loaded: Yes
Obtained from: Identified Developer
Kind: Intel
Architectures: x86_64
64-Bit (Intel): Yes
Location: /Library/Extensions/zfs.kext
Kext Version: 1.5.2
Load Address: 18446743521817600000
Loadable: Yes
Dependencies: Satisfied
Signed by: Developer ID Application: Joergen Lundman (735AM5QEU3), Developer ID Certification Authority, Apple Root CA
Here are the pool props:
- Code: Select all
alpha% zpool get all
NAME PROPERTY VALUE SOURCE
pool size 115G -
pool capacity 88% -
pool altroot - default
pool health ONLINE -
pool guid 16368736711765884652 default
pool version - default
pool bootfs - default
pool delegation on default
pool autoreplace off default
pool cachefile - default
pool failmode wait default
pool listsnapshots off default
pool autoexpand off default
pool dedupditto 0 default
pool dedupratio 1.00x -
pool free 12.8G -
pool allocated 102G -
pool readonly off -
pool ashift 0 default
pool comment - default
pool expandsize - -
pool freeing 0 default
pool fragmentation 53% -
pool leaked 0 default
pool feature@async_destroy enabled local
pool feature@empty_bpobj active local
pool feature@lz4_compress active local
pool feature@multi_vdev_crash_dump enabled local
pool feature@spacemap_histogram active local
pool feature@enabled_txg active local
pool feature@hole_birth active local
pool feature@extensible_dataset enabled local
pool feature@embedded_data active local
pool feature@bookmarks enabled local
pool feature@filesystem_limits enabled local
pool feature@large_blocks enabled local
pool feature@sha512 enabled local
pool feature@skein enabled local
pool feature@edonr enabled local
Here are the props of the dataset where I was performing the rebase:
- Code: Select all
alpha% zfs get all pool/Projects
NAME PROPERTY VALUE SOURCE
pool/Projects type filesystem -
pool/Projects creation Fri Oct 30 11:47 2015 -
pool/Projects used 56.6G -
pool/Projects available 9.24G -
pool/Projects referenced 40.1G -
pool/Projects compressratio 1.32x -
pool/Projects mounted yes -
pool/Projects quota none default
pool/Projects reservation none default
pool/Projects recordsize 128K default
pool/Projects mountpoint /Volumes/pool/Projects default
pool/Projects sharenfs off default
pool/Projects checksum on default
pool/Projects compression lz4 inherited from pool
pool/Projects atime on default
pool/Projects devices on default
pool/Projects exec on default
pool/Projects setuid on default
pool/Projects readonly off default
pool/Projects zoned off default
pool/Projects snapdir hidden default
pool/Projects aclmode passthrough default
pool/Projects aclinherit restricted default
pool/Projects canmount on default
pool/Projects xattr on default
pool/Projects copies 1 default
pool/Projects version 5 -
pool/Projects utf8only off -
pool/Projects normalization none -
pool/Projects casesensitivity sensitive -
pool/Projects vscan off default
pool/Projects nbmand off default
pool/Projects sharesmb off default
pool/Projects refquota none default
pool/Projects refreservation none default
pool/Projects primarycache all default
pool/Projects secondarycache all default
pool/Projects usedbysnapshots 0 -
pool/Projects usedbydataset 40.1G -
pool/Projects usedbychildren 16.5G -
pool/Projects usedbyrefreservation 0 -
pool/Projects logbias latency default
pool/Projects dedup off default
pool/Projects mlslabel none default
pool/Projects sync standard default
pool/Projects refcompressratio 1.22x -
pool/Projects written 40.1G -
pool/Projects logicalused 74.7G -
pool/Projects logicalreferenced 48.8G -
pool/Projects filesystem_limit none default
pool/Projects snapshot_limit none default
pool/Projects filesystem_count none default
pool/Projects snapshot_count none default
pool/Projects snapdev hidden default
pool/Projects com.apple.browse on default
pool/Projects com.apple.ignoreowner off default
pool/Projects com.apple.mimic_hfs off default
pool/Projects redundant_metadata all default
pool/Projects overlay off default
And my git version:
- Code: Select all
alpha% git --version
git version 2.10.2
Thanks for looking into this further.
Cheers,
Calvin
Re: Git rebase fails on ZFS dataset
Posted:
Tue Nov 15, 2016 6:49 am
by calvinhp
I just re-tested on a fresh pool with the casesensitvity and normalization set per the wiki and got the same results:
- Code: Select all
alpha% zpool get all test
NAME PROPERTY VALUE SOURCE
test size 14.4G -
test capacity 0% -
test altroot - default
test health ONLINE -
test guid 17821224542451826698 default
test version - default
test bootfs - default
test delegation on default
test autoreplace off default
test cachefile - default
test failmode wait default
test listsnapshots off default
test autoexpand off default
test dedupditto 0 default
test dedupratio 1.00x -
test free 14.4G -
test allocated 728K -
test readonly off -
test ashift 12 local
test comment - default
test expandsize - -
test freeing 0 default
test fragmentation 0% -
test leaked 0 default
test feature@async_destroy enabled local
test feature@empty_bpobj enabled local
test feature@lz4_compress active local
test feature@multi_vdev_crash_dump enabled local
test feature@spacemap_histogram active local
test feature@enabled_txg active local
test feature@hole_birth active local
test feature@extensible_dataset enabled local
test feature@embedded_data active local
test feature@bookmarks enabled local
test feature@filesystem_limits enabled local
test feature@large_blocks enabled local
test feature@sha512 enabled local
test feature@skein enabled local
test feature@edonr enabled local
- Code: Select all
alpha% zfs get all test
NAME PROPERTY VALUE SOURCE
test type filesystem -
test creation Tue Nov 15 9:45 2016 -
test used 648K -
test available 13.9G -
test referenced 444K -
test compressratio 2.62x -
test mounted yes -
test quota none default
test reservation none default
test recordsize 128K default
test mountpoint /Volumes/test default
test sharenfs off default
test checksum on default
test compression lz4 local
test atime on default
test devices on default
test exec on default
test setuid on default
test readonly off default
test zoned off default
test snapdir hidden default
test aclmode passthrough default
test aclinherit restricted default
test canmount on default
test xattr on default
test copies 1 default
test version 5 -
test utf8only on -
test normalization formD -
test casesensitivity insensitive -
test vscan off default
test nbmand off default
test sharesmb off default
test refquota none default
test refreservation none default
test primarycache all default
test secondarycache all default
test usedbysnapshots 0 -
test usedbydataset 444K -
test usedbychildren 204K -
test usedbyrefreservation 0 -
test logbias latency default
test dedup off default
test mlslabel none default
test sync standard default
test refcompressratio 2.88x -
test written 444K -
test logicalused 1.07M -
test logicalreferenced 1.01M -
test filesystem_limit none default
test snapshot_limit none default
test filesystem_count none default
test snapshot_count none default
test snapdev hidden default
test com.apple.browse on default
test com.apple.ignoreowner off default
test com.apple.mimic_hfs off default
test redundant_metadata all default
test overlay off default
Same results:
- Code: Select all
alpha%── git rebase master
Created autostash: 7a62dee
HEAD is now at 2fe814f Merge branch 'task-nibs' into timed-tasks
First, rewinding head to replay your work on top of it...
Applying: add delayed commands to the task viewer
Using index info to reconstruct a base tree...
Falling back to patching base and 3-way merge...
error: Your local changes to the following files would be overwritten by merge:
Quicksilver/Code-QuickStepCore/QSCommand.m
Please commit your changes or stash them before you merge.
Aborting
error: Failed to merge in the changes.
Patch failed at 0001 add delayed commands to the task viewer
The copy of the patch that failed is found in: .git/rebase-apply/patch
When you have resolved this problem, run "git rebase --continue".
If you prefer to skip this patch, run "git rebase --skip" instead.
To check out the original branch and stop rebasing, run "git rebase --abort".
Re: Git rebase fails on ZFS dataset
Posted:
Tue Nov 15, 2016 4:11 pm
by lundman
Neat, that is a bit of a mystery. I did do my checkout with https instead of ssh, but can't imagine that would affect it.
Re: Git rebase fails on ZFS dataset
Posted:
Thu Nov 17, 2016 10:33 am
by Brendon
I also tried this without issue. I guess I should say that I am running roughly master from the source repo.
- Code: Select all
git clone https://github.com/quicksilver/Quicksilver.git
Cloning into 'Quicksilver'...
remote: Counting objects: 36762, done.
remote: Compressing objects: 100% (7/7), done.
remote: Total 36762 (delta 1), reused 0 (delta 0), pack-reused 36755
Receiving objects: 100% (36762/36762), 118.95 MiB | 494.00 KiB/s, done.
Resolving deltas: 100% (24041/24041), done.
Checking connectivity... done.
jerry:tmp brendy$ cd Quicksilver
jerry:Quicksilver brendy$ git checkout -b timed-tasks origin/timed-tasks
Branch timed-tasks set up to track remote branch timed-tasks from origin.
Switched to a new branch 'timed-tasks'
jerry:Quicksilver brendy$ git rebase master
First, rewinding head to replay your work on top of it...
Applying: add delayed commands to the task viewer
Applying: factor out code for setting up task and timer
Applying: update deployment target for the Task NIBs
- Code: Select all
jerry:Quicksilver brendy$ zfs get all tank/Users
NAME PROPERTY VALUE SOURCE
tank/Users type filesystem -
tank/Users creation Sun Oct 27 17:10 2013 -
tank/Users used 1.35T -
tank/Users available 7.71T -
tank/Users referenced 1.26T -
tank/Users compressratio 1.15x -
tank/Users mounted yes -
tank/Users quota none default
tank/Users reservation none default
tank/Users recordsize 128K default
tank/Users mountpoint /Volumes/Users local
tank/Users sharenfs off default
tank/Users checksum on default
tank/Users compression lz4 local
tank/Users atime off inherited from tank
tank/Users devices on default
tank/Users exec on default
tank/Users setuid on default
tank/Users readonly off default
tank/Users zoned off default
tank/Users snapdir hidden default
tank/Users aclmode passthrough default
tank/Users aclinherit restricted default
tank/Users canmount on local
tank/Users xattr on default
tank/Users copies 1 default
tank/Users version 5 -
tank/Users utf8only on -
tank/Users normalization formD -
tank/Users casesensitivity insensitive -
tank/Users vscan off default
tank/Users nbmand off default
tank/Users sharesmb off default
tank/Users refquota none default
tank/Users refreservation none default
tank/Users primarycache all inherited from tank
tank/Users secondarycache all default
tank/Users usedbysnapshots 90.0G -
tank/Users usedbydataset 1.26T -
tank/Users usedbychildren 0 -
tank/Users usedbyrefreservation 0 -
tank/Users logbias latency default
tank/Users dedup off default
tank/Users mlslabel none default
tank/Users sync standard default
tank/Users refcompressratio 1.10x -
tank/Users written 2.83G -
tank/Users logicalused 1.53T -
tank/Users logicalreferenced 1.39T -
tank/Users filesystem_limit none default
tank/Users snapshot_limit none default
tank/Users filesystem_count none default
tank/Users snapshot_count none default
tank/Users snapdev hidden default
tank/Users com.apple.browse on default
tank/Users com.apple.ignoreowner off default
tank/Users com.apple.mimic_hfs on local
tank/Users shareafp off default
tank/Users redundant_metadata all default
tank/Users overlay off default
tank/Users org.znapzend:src_plan 1weeks=>1hours,1months=>1days,104weeks=>1weeks local
tank/Users org.znapzend:mbuffer off local
tank/Users org.znapzend:pre_znap_cmd off local
tank/Users org.znapzend:dst_0_plan 1weeks=>1days,104weeks=>1weeks local
tank/Users org.znapzend:post_znap_cmd off local
tank/Users org.znapzend:enabled on local
tank/Users org.znapzend:recursive off local
tank/Users org.znapzend:mbuffer_size 1G local
tank/Users org.znapzend:tsformat %Y-%m-%d-%H%M%S local
tank/Users org.znapzend:dst_0 backups2/Users3 local
Re: Git rebase fails on ZFS dataset
Posted:
Mon Sep 11, 2023 3:41 am
by minimons
Hello!
And here 9 years later I see the same bug.
ZFS v2.1.6.
Was there any solutions to this?
Best regards,
- Morten Green Hermansen