2013/12/7 Martin Langhoff <martin.langh...@gmail.com>:
> Tested with git 1.7.12.4 (Apple Git-37) and git 1.8.3.1 on F20.
>
> $ mkdir foo
> $ cd foo
> $ git init
> Initialized empty Git repository in /tmp/foo/.git/
> $ mkdir -p modules/boring
> $ mkdir -p modules/interesting
> $ touch modules/boring/lib.c
> $ touch modules/interesting/other.c
> $ touch modules/interesting/lib.c
> $ git add modules/interesting/lib.c
> $ git status
> # On branch master
> #
> # Initial commit
> #
> # Changes to be committed:
> #   (use "git rm --cached <file>..." to unstage)
> #
> # new file:   modules/interesting/lib.c
> #
> # Untracked files:
> #   (use "git add <file>..." to include in what will be committed)
> #
> # modules/boring/
> # modules/interesting/other.c
>
> $ echo '/modules/' > .gitignore
> $ echo '!/modules/interesting/' >> .gitignore
>

I happened to write a software "Gistore" to backup arbitrary files and
directories using Git, and it will save interesting things in .git/info/exclude.
For your case, you could write .gitignore as:

    /modules/*
    !/modules/interesting
    !/modules/interesting/**

You can find my code in Gistore to generate proper .gitignore here:

    https://github.com/jiangxin/gistore/blob/master/lib/gistore/repo.rb#L228

Because I will ignore all files except what I want, the ignore file would be:

   *
    !/modules
    !/modules/interesting
    !/modules/interesting/**


-- 
Jiang Xin
--
To unsubscribe from this list: send the line "unsubscribe git" in
the body of a message to majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to