Git rebase fails on ZFS dataset

All your general support questions for OpenZFS on OS X.

Git rebase fails on ZFS dataset

Postby calvinhp » Mon Nov 07, 2016 11:54 am

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
calvinhp
 
Posts: 5
Joined: Wed Oct 12, 2016 10:33 am

Re: Git rebase fails on ZFS dataset

Postby lundman » Mon Nov 07, 2016 4:13 pm

This is quite interesting. Do you have some simple steps, perhaps from a public repository, that would show this issue?
User avatar
lundman
 
Posts: 1337
Joined: Thu Mar 06, 2014 2:05 pm
Location: Tokyo, Japan

Re: Git rebase fails on ZFS dataset

Postby calvinhp » Tue Nov 08, 2016 8:06 am

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.
calvinhp
 
Posts: 5
Joined: Wed Oct 12, 2016 10:33 am

Re: Git rebase fails on ZFS dataset

Postby lundman » Mon Nov 14, 2016 7:01 pm

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.
User avatar
lundman
 
Posts: 1337
Joined: Thu Mar 06, 2014 2:05 pm
Location: Tokyo, Japan

Re: Git rebase fails on ZFS dataset

Postby calvinhp » Tue Nov 15, 2016 6:38 am

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
calvinhp
 
Posts: 5
Joined: Wed Oct 12, 2016 10:33 am

Re: Git rebase fails on ZFS dataset

Postby calvinhp » Tue Nov 15, 2016 6:49 am

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".

calvinhp
 
Posts: 5
Joined: Wed Oct 12, 2016 10:33 am

Re: Git rebase fails on ZFS dataset

Postby lundman » Tue Nov 15, 2016 4:11 pm

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.
User avatar
lundman
 
Posts: 1337
Joined: Thu Mar 06, 2014 2:05 pm
Location: Tokyo, Japan

Re: Git rebase fails on ZFS dataset

Postby Brendon » Thu Nov 17, 2016 10:33 am

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
Brendon
 
Posts: 286
Joined: Thu Mar 06, 2014 12:51 pm

Re: Git rebase fails on ZFS dataset

Postby minimons » Mon Sep 11, 2023 3:41 am

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
minimons
 
Posts: 4
Joined: Thu Nov 04, 2021 1:35 am


Return to General Help

Who is online

Users browsing this forum: No registered users and 31 guests

cron