git/list[1] front-page[2] threads[3] people[4] search[5] about
 

Re: Checkout first version of each file?

From
Fredrik Gustafsson <iveqy@iveqy.com>
Date
Nov 8, 2011, 15:00 UTC
Message-ID
<20111108150007.GA5261@kolya>
In-Reply-To
<CABLeVKFkSP=2-kwsN4N+oLrPnijkpvV8Ki=Si4dpYXdzc+8ibQ@mail.gmail.com>
On Tue, Nov 08, 2011 at 11:17:27AM -0300, Dario Rodriguez wrote:
Show 55 quoted lines
> On Tue, Nov 8, 2011 at 11:02 AM, Fredrik Gustafsson <iveqy@iveqy.com> wrote:
> > On Tue, Nov 08, 2011 at 10:58:05AM -0300, Dario Rodriguez wrote:
> >> Hello,
> >>
> >> My "issue" comes with my usage of git at work. I work with lots of
> >> applications, each of them part of each system. There are lots of
> >> processes and lots of subsystems, so I never clone the entire repo
> >> into GIT, since it could be painful and slow. Even if I do so,
> >> everyone else is using ClearCase, and their changes cannot be included
> >> into my git repo until they "chickin". Sometimes, I must update
> >> sources from FTP because the changes are not up to date in
> >> ClearCase...
> >>
> >> So, I clone every file that I will need to work into GIT, so i can
> >> work with these files having a better control (With ClearCase it's a
> >> foolish "checkout>>lots of changes>>checkin" flow). But sometimes I
> >> don't know how many files I am going to change until I start coding
> >> the requisites.
> >>
> >> In this cases, there is a situation that I don't know how to handle.
> >> If I need to rollback every change made to every file I cannot just
> >> checkout the initial commit, cause I've added files after that, and I
> >> need their initial versions too.
> >>
> >> So, how can I checkout the first version of each file? (I know that
> >> GIT tracks contents and not files, but the fact is that I need to keep
> >> track on files, it's the real thing I work with)
> >>
> >> pd: Sorry about my Argentinian-English (if it sounds so)
> >>
> >> Thanks,
> >> Dario
> >> --
> >> To unsubscribe from this list: send the line "unsubscribe git" in
> >> the body of a message to majordomo@vger.kernel.org
> >> More majordomo info at  http://vger.kernel.org/majordomo-info.html
> >
> > Is all files present in your latest commit? Or can there be deleted
> > files that you also need to recover?
> >
> > --
> > Med vänliga hälsningar
> > Fredrik Gustafsson
> >
> > E-post: iveqy@iveqy.com
> > Tel. nr.: 0733 60 82 74
> >
> 
> Every file in the latest working tree is also a tracked file. The
> files are being added to the git repo, but not removed from it.
> 
> In other words, the biggest set of files is the latest working tree,
> and the smallest one is the first commit.
> 
> Dario

I can't see a pure git way of doing this. However, you already seem to use git in a very hackish-way. So here's a quick n' dirty solution (that is not very efficient).

(not tested example code, that should be runned from the root-gitdir.):
#!/bin/sh
git reset --hard HEAD
for f in `find`
do
	commit=`git log $f | grep commit | tail -1`
	git checkout $commit $f
done
-- 
Med vänliga hälsningar
Fredrik Gustafsson

E-post: iveqy@iveqy.com
Tel. nr.: 0733 60 82 74
Previous: Dario RodriguezNext: Dario Rodriguez
Message 4 of 8 in “Checkout first version of each file?”
  1. Dario RodriguezNov 8, 2011
  2. Fredrik GustafssonNov 8, 2011
  3. Dario RodriguezNov 8, 2011
  4. Fredrik GustafssonNov 8, 2011
  5. Dario RodriguezNov 8, 2011
  6. Andreas SchwabNov 8, 2011
  7. Dario RodriguezNov 8, 2011
  8. Junio C HamanoNov 8, 2011

Read the whole thread, see it on lore, or plain text.

$ cat FOOTERMessages come from the public archive at lore.kernel.org/git, fetched every hour. The front page is chosen and written each morning by an AI editor and can be wrong; the threads themselves are the record. About and API. For agents: an MCP server at https://gitlist.dev/mcp, and any thread, story or person page as Markdown by adding .md to its URL (or sending Accept: text/markdown). Details in /llms.txt.