git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
* Hard reset of a subdirectory in a sparse checkout setting
@ 2013-03-22 10:28 Kirill Müller
  2013-03-23  9:59 ` Duy Nguyen
  2013-03-24  5:06 ` [PATCH] checkout: add --sparse for restoring files in sparse checkout mode Nguyễn Thái Ngọc Duy
  0 siblings, 2 replies; 17+ messages in thread
From: Kirill Müller @ 2013-03-22 10:28 UTC (permalink / raw)
  To: git

Hi

I can't find a neat way to "git reset --hard" a subdirectory of a 
checkout without reading in directories or files which are excluded by a 
sparse checkout. This has been asked on StackOverflow in greater detail, 
but the "right" answer is still missing: 
http://stackoverflow.com/q/15404535/946850

The options I see are:

- git checkout . (will restore excluded directories)

- git reset --hard (won't accept a path argument)

- git diff | patch -R (awkward)

What's the proper way to do this in Git?

The script below illustrates the problem. The proper command should be 
inserted below the "How to make files ..." comment -- the current 
command "git checkout -- a" will restore the file a/c/ac which is 
supposed to be excluded by the sparse checkout. Note that I do not want 
to explicitly restore a/a and a/b, I only "know" a and want to restore 
everything below. And I also don't "know" b, or which other directories 
reside on the same level as a.

Thank you for your help.


Cheers

Kirill


#!/bin/sh

rm -rf repo; git init repo; cd repo
for f in a b; do
   for g in a b c; do
     mkdir -p $f/$g
     touch $f/$g/$f$g
     git add $f/$g
     git commit -m "added $f/$g"
   done
done
git config core.sparsecheckout true
echo a/a > .git/info/sparse-checkout
echo a/b >> .git/info/sparse-checkout
echo b/a >> .git/info/sparse-checkout
git read-tree -m -u HEAD
echo "After read-tree:"
find * -type f

rm a/a/aa
rm a/b/ab
echo >> b/a/ba
echo "After modifying:"
find * -type f
git status

# How to make files a/* reappear without changing b and without 
recreating a/c?
git checkout -- a

echo "After checkout:"
git status
find * -type f

^ permalink raw reply	[flat|nested] 17+ messages in thread

end of thread, other threads:[~2013-05-14 10:22 UTC | newest]

Thread overview: 17+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2013-03-22 10:28 Hard reset of a subdirectory in a sparse checkout setting Kirill Müller
2013-03-23  9:59 ` Duy Nguyen
2013-03-23 13:02   ` Kirill Müller
2013-03-24  5:06 ` [PATCH] checkout: add --sparse for restoring files in sparse checkout mode Nguyễn Thái Ngọc Duy
2013-03-24  6:12   ` Eric Sunshine
2013-03-24 18:17   ` Jonathan Nieder
2013-03-24 19:50     ` Kirill Müller
2013-03-25  1:34     ` Duy Nguyen
2013-03-25  1:57       ` Jonathan Nieder
2013-03-30 10:02   ` [PATCH v2] checkout: add --no-widen " Nguyễn Thái Ngọc Duy
2013-04-01  4:48     ` Jonathan Nieder
2013-04-01  5:12       ` Junio C Hamano
2013-04-01  5:13       ` Duy Nguyen
2013-04-01  6:18         ` Jonathan Nieder
2013-04-12 23:12     ` [PATCH v3] checkout: add --ignore-skip-worktree-bits " Nguyễn Thái Ngọc Duy
2013-05-14  9:27       ` Müller  Kirill
2013-05-14 10:21         ` Duy Nguyen

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).