From: "Nguyen Thai Ngoc Duy" <pclouds@gmail.com>
To: "Jakub Narebski" <jnareb@gmail.com>
Cc: git@vger.kernel.org
Subject: Re: [PATCH 15/16] checkout: add new options to support narrow checkout
Date: Tue, 16 Sep 2008 19:21:12 +0700 [thread overview]
Message-ID: <fcaeb9bf0809160521o24fd26e4l40f1798228d51712@mail.gmail.com> (raw)
In-Reply-To: <200809152205.15388.jnareb@gmail.com>
On 9/16/08, Jakub Narebski <jnareb@gmail.com> wrote:
> >> Couldn't you simply escape ':', i.e. write for example Git\:\:Tag.3pm,
> >> or Eichten_PRD21\:313,1980_erratum.tex, or \:0.log, or perhaps
> >> kmail/jnareb@gmail.com\:@pop.gmail.com\:995, or even something like
> >> Mail/inbox/cur/1194202360.32296.mprnq\:2,S, in the same way like you
> >> can escape other special characters, for example wildcard characters
> >> like '\*' for '*' and '\?' for '?', and of course '\\' for '\'?
> >
> > Sure. Somehow I forgot that.
>
>
> Well, if it is possible, it should be stated in documentation.
> Even if it is obvious.
I mean it should be possible, but not yet implemented. Next time
document will be updated when '\' escape is implemented.
> > --<--
> > Narrow checkout
> > ---------------
> >
> > Normally when you do checkout a branch, your working directory
> > will be fully populated. In some situations, you just need to
> > work on certain files, no full checkout is needed. Narrow
> > checkout is a mode that limits checkout area according to your
> > needs.
>
>
> You have decided then on the term 'narrow checkout', and not
> 'partial checkout' or 'sparse checkout', then?
Not yet. I tend to prefer partial/sparse checkout. Probably should
have a look at how other SCMs do and what term they use. If Git's
functionality is so different, a different term might notice people
about that.
> > Because narrow checkout uses new index format, it will be
> > incompatible with git prior to 1.6.0 regarding worktree operations.
> > Repository-only operations such as clone, push, pull... should not be
>
>
> s/pull/fetch/. pull affects working repository, and it can affect
> narrow checkout unexpectedly by conflicts during merge part of pull.
Bad writing. I mean pull/fetch from a narrow-checkout-ed repository to
another fully populated one. Will fix.
>
> > affected by narrow checkout. In order to make your working directory
> > work again with those versions, you can use `git checkout --full` to
> > return to normal mode (and compatible index format).
>
>
> By the way, you have made "git checkout <file>" get file and mark
> it "wanted", i.e. clear/zero "no-checkout" bit. Wouldn't then
> "git checkout ." be shorter equivalent to "git checkout --full"?
> I'm not saying that '--full' option should be abandoned...
It is not equivalent. "git checkout ." will happily overwrite any
modified files in your working directory.
>
> >
> > In narrow checkout mode, checkout status of every files in your
> > working directory will be recorded in index. If a file is marked
> > "no-checkout", it means that file is not needed to be present in
> > working directory by user or any git command. When a new file is added
> > to index, it will be marked "checkout" unless narrow spec is applied.
> > Unmerged files are always "checkout". linkgit:git-update-index[1] can
> > be used to update "checkout/no-checkout" status in index. When you
> > checkout new files using "git checkout <file>" they will be
> > automatically marked "checkout". Other commands such as "git apply"
> > can also checkout new files if they are needed.
> >
> > "No-checkout" status is very similar to "assume-unchanged bit"
> > (see linkgit:git-update-index[1]). The main difference between them
> > is "assume unchanged" bit just ignores corresponding files in working
> > directory while narrow checkout goes a bit farther, remove those files
> > when it is safe to do so.
>
>
> Good description (although probably could be improved even further).
Contributions are welcome ;)
>
> >
> > When you apply new narrow spec to your working directory using either
> > --path, --add-path or --remove-path, it will update "checkout" status
> > in index accordingly. Moreover, if a file is marked "no-checkout" and
> > is present in working directory, it will be removed. If a file is
> > turned from "no-checkout" to "checkout", then it will be added again
> > to working directory. Modified and unmerged entries can't bear
> > "no-checkout" status, if narrow spec applies to them, "git checkout"
> > will refuse to update working directory.
>
>
> Do I understand correctly, that if one uses --path=<colon separated list>
> _only_ filenames matching one of patterns specified would be checked out,
> --add-path=<path> would additionally checkout given path and mark "wanted",
> and --remove-path=<path> would additionally mark "no-checkout" and remove
> path?
--add-path/--remove-path also use narrow spec, which could be more
than one pattern.
> What --add-path starts from, i.e. does
>
> $ git checkout --add-path=.gitignore
>
> starts from empty set if --add-path is first, or from full set as without
> --add-path?
I'm not sure I understand this.
> And is <pathspec> matched against full pathname, or like .gitignore
> rules, i.e. as full pathname if it has at least one '/' in it?
like shell wildcard, full pathname must match. On my way back home, I
thought I should have removed mention of "pathspec", which behaves a
little bit different.
Also those specs are relative to working directory though, so if you
are in b/c and want to match d, you only need to type --add-path=d
instead of --add-path=b/c/d. Will add this to doc.
>
> >
> > Narrow spec is not saved by "git checkout". You can form your checkout
> > area on one go with --path option, or do it incrementally
> > with --add-path and --remove-path.
> > --<--
>
>
> I would probably say that specification used to select which paths to
> check out is not saved anywhere, and used only to mark paths in index
> as "no-checkout" or not. Or somehing like that.
>
Thanks (as for other parts of your comments stripped by me)
--
Duy
next prev parent reply other threads:[~2008-09-16 12:22 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
[not found] <48cdde2837b2d_12d73fc6eb2c355c27876@app02.zenbe.com.tmail>
2008-09-15 10:40 ` [PATCH 15/16] checkout: add new options to support narrow checkout Jakub Narebski
2008-09-15 14:01 ` Nguyen Thai Ngoc Duy
2008-09-15 20:05 ` Jakub Narebski
2008-09-16 12:21 ` Nguyen Thai Ngoc Duy [this message]
2008-09-17 9:07 ` Jakub Narebski
2008-09-17 13:49 ` Nguyen Thai Ngoc Duy
2008-09-17 16:32 ` Johannes Sixt
2008-09-17 16:43 ` Nguyen Thai Ngoc Duy
2008-09-17 21:31 ` Jakub Narebski
2008-09-14 13:07 [PATCH 00/16] Narrow/Partial/Sparse checkout Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 01/16] Extend index to save more flags Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 02/16] Introduce CE_NO_CHECKOUT bit Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 03/16] update-index: refactor mark_valid() in preparation for new options Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 04/16] update-index: add --checkout/--no-checkout to update CE_NO_CHECKOUT bit Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 05/16] ls-files: add --narrow-checkout option to "will checkout" entries Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 06/16] Add tests for updating no-checkout entries in index Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 07/16] Prevent diff machinery from examining worktree outside narrow checkout Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 08/16] checkout_entry(): CE_NO_CHECKOUT on checked out entries Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 09/16] ls-files: apply --deleted on narrow area only Nguyễn Thái Ngọc Duy
2008-09-14 13:07 ` [PATCH 10/16] grep: skip files that have not been checked out Nguyễn Thái Ngọc Duy
2008-09-14 13:08 ` [PATCH 11/16] unpack_trees(): add support for narrow checkout Nguyễn Thái Ngọc Duy
2008-09-14 13:08 ` [PATCH 12/16] narrow spec: put '+' before a spec will change semantic of '*' Nguyễn Thái Ngọc Duy
2008-09-14 13:08 ` [PATCH 13/16] ls-files: add --narrow-match=spec option for testing narrow matching Nguyễn Thái Ngọc Duy
2008-09-14 13:08 ` [PATCH 14/16] clone: support narrow checkout with --path option Nguyễn Thái Ngọc Duy
2008-09-14 13:08 ` [PATCH 15/16] checkout: add new options to support narrow checkout Nguyễn Thái Ngọc Duy
2008-09-14 21:12 ` Jakub Narebski
2008-09-16 9:53 ` Baz
2008-09-16 10:17 ` Johannes Sixt
2008-09-16 13:13 ` Nguyen Thai Ngoc Duy
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=fcaeb9bf0809160521o24fd26e4l40f1798228d51712@mail.gmail.com \
--to=pclouds@gmail.com \
--cc=git@vger.kernel.org \
--cc=jnareb@gmail.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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).