Thread (8 messages) flat view 8 messages, 3 authors, 2016-06-15

Re: Binary files in a linear repository

From: Björn Steinbrink <hidden>
Date: 2016-06-15 22:47:39

On 2009.11.02 16:08:25 +0100, Markus Hitter wrote:
The situation I'm trying to solve is:

- A revision earlier than the latest one is checked out.

- Files of this earlier commit are modified.

- I want to record this earlier commit along with it's modifications
as a new commit on top of master, ignoring intermediate commits:

com005  <-- master
com004
com003  <-- HEAD, files modified
com002
com001 (initial commit)

One solution to do this is to move all files somewhere else, check
out master, deleting all checked out files, placing the moved away
files back into place and committing the result as com006.
Obviously, this is a pretty complex operation, just waiting to
exploit coding mistakes. Additionally, this will be slow.
Instead of doing "git checkout com003", which detaches HEAD, you could
do:
git read-tree -u --reset com003

Which will update the index and working tree to reflect the contents of
com003. The modify stuff, add, commit, done.
Now I'm thinking about a much simpler solution: Simply declare the
current set of files as (a modified) master/com005 and commit them.
A "cp $GIT_DIR/master $GIT_DIR/HEAD" followed by a commit would do
it.

Now my question: Is it safe to tweak the files in $GIT_DIR this way
or will this corrupt the repository?
Ignoring that $GIT_DIR/master is the wrong path, that 'cp' would (at
best) act like detaching HEAD.

Björn
Keyboard shortcuts
hback out one level
jnext message in thread
kprevious message in thread
ldrill in
Escclose help / fold thread tree
?toggle this help