git.vger.kernel.org archive mirror
 help / color / mirror / Atom feed
From: Yakup Akbay <yakbay@ubicom.com>
To: git@vger.kernel.org
Subject: Feature Request: Capability to save and load the workspace
Date: Fri, 31 Jul 2009 11:45:16 +0300	[thread overview]
Message-ID: <4A72AF1C.1020500@ubicom.com> (raw)

I'm not sure whether such a feature exists or not. But let me explain my
concern.

Say, we have different profiles for different products. When I work on a
profile (edit, configure, build etc.) I can't switch to another profile
before I distclean the existing one. So, when I have to work on 2
projects at the same time, I have to have 2 copies of the same source
tree. This might be OK for 2, but if the repository is around 3 gigs
this is not quite suitable for more than 2 profiles.

IT WOULD BE NICE to have a feature in git that allows us to save the
current workspace then work on a different profile on a clean
environment. Then save that profile and switch back to the previous
profile at any time without losing the environment.

Currently, I'm doing this myself using some scripts like:


work on foo

$ ./project-save foo
work on bar
$ ./project-save bar
$ ./project-load foo
keep working on foo
etc.


where, project-save looks like:
1. BRANCH=<current branch>
2. echo $BRANCH > .BRANCH
3. git checkout -q -b foo
4. git add -f .
5. git commit -q -m 'Save foo'
6. git checkout -q $BRANCH

This simply forks a new branch 'foo' then adds/commits all untracked +
gitignore'd files to 'foo'. In addition, it stores the current branch
name in a temporary file (.BRANCH). (All binary files and even temporary
file are committed.)


and, project-load looks like:
1. git checkout -q -f foo -- .BRANCH
2. BRANCH=`cat .BRANCH`
3. git checkout -q -f $BRANCH
4. git checkout -q -f foo -- .
5. git reset -q
6. rm -f .BRANCH

This gets the target branch name from the file .BRANCH in 'foo',
switches to that branch and checks out all files from 'foo'. At the end
it removes .BRANCH file. 

If I want to completely remove the project foo, then I simply remove the
branch 'foo'.
---

The problem is that this works way too slow  :-(  (this has some other
problems as well). I believe, such a feature could be implemented more
efficiently in the core, but I'm so familiar with core git.
 

What do you think?

Yakup


 

             reply	other threads:[~2009-07-31  8:52 UTC|newest]

Thread overview: 6+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2009-07-31  8:45 Yakup Akbay [this message]
2009-07-31  9:09 ` Feature Request: Capability to save and load the workspace Erik Faye-Lund
2009-07-31  9:16   ` Yakup Akbay
2009-07-31 10:14     ` Johannes Schindelin
2009-07-31 12:08     ` Matthieu Moy
2009-07-31  9:20 ` Jakub Narebski

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=4A72AF1C.1020500@ubicom.com \
    --to=yakbay@ubicom.com \
    --cc=git@vger.kernel.org \
    /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).