* [PATCH] Add "clone" support to lntree @ 2005-04-16 1:56 Daniel Barkalow 2005-04-16 2:47 ` Petr Baudis 0 siblings, 1 reply; 29+ messages in thread From: Daniel Barkalow @ 2005-04-16 1:56 UTC (permalink / raw) To: Petr Baudis; +Cc: git I often want to take a base tree, which I keep tracking some remote head, and make a local working tree that starts from it. This makes "git ln -c <dest>" give you a tree that you can just start working in and then diff against the head you'd started from and send off. Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org> Index: gitlntree.sh =================================================================== --- b068d3ec7c00cfe4a1f14a898f61c4807cd5bc8b/gitlntree.sh (mode:100755 sha1:17c4966ea64aeced96ae4f1b00f3775c1904b0f1) +++ 0877e1b9b70a4305959b7f65ace4044e4ae0afdb/gitlntree.sh (mode:100755 sha1:84cbf0492996f1139b992147b4f53bc14342e3f2) @@ -7,11 +7,14 @@ # same objects database as the current one. It also shares the # branches and tags information. # -# The new directory is completely pristine - there's not even -# a directory cache there yet. -# # Takes the new directory name. +if [ "$1" = "-c" ] +then + clone=yes + shift 1 +fi + destdir=$1 die () { @@ -32,3 +35,12 @@ ln -s $srcdir/.git/objects $dgitdir/objects ln -s $srcdir/.git/remotes $dgitdir/remotes ln -s $srcdir/.git/tags $dgitdir/tags + +if [ "$clone" != "" ] +then + cp $srcdir/.git/HEAD $dgitdir/HEAD + cd $destdir + read-tree $(tree-id) + checkout-cache -a + update-cache --refresh +fi ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Add "clone" support to lntree 2005-04-16 1:56 [PATCH] Add "clone" support to lntree Daniel Barkalow @ 2005-04-16 2:47 ` Petr Baudis 2005-04-16 2:58 ` Petr Baudis 2005-04-16 3:06 ` Add "clone" support to lntree Daniel Barkalow 0 siblings, 2 replies; 29+ messages in thread From: Petr Baudis @ 2005-04-16 2:47 UTC (permalink / raw) To: Daniel Barkalow; +Cc: git Dear diary, on Sat, Apr 16, 2005 at 03:56:03AM CEST, I got a letter where Daniel Barkalow <barkalow@iabervon.org> told me that... > I often want to take a base tree, which I keep tracking some remote head, > and make a local working tree that starts from it. This makes "git ln -c > <dest>" give you a tree that you can just start working in and then diff > against the head you'd started from and send off. > > Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org> I'm sorry but you are late, I added it about a hour and half ago or so. :-) Check git fork. (I *want* separate command than git lntree. In fact, I think I should make git lntree gitXlntree.sh instead, since it is really internal command for git-tools and the user should probably never need it for anything. git lntree is too lowlevel.) Actually, I don't like the name at all, though. Some people may find pondering about names pointless, but when I'm going to type them in every day for the rest of my life, they better should not be stupid. ;-) So, what are your clever ideas about git fork's proper name? Or should we leave it as is? Summary of current related git commands (yes, they are already around and should be actually all working): git addremote --- registers a remote branch (name - URL pair) git branch --- creates a branch from a given commit (when passed empty commit, creates a branch from the current commit and sets the working tree to that branch) git clone --- creates a local GIT repository from a remote one git export --- checks out given commit to a separate directory (without any GIT information) git fork --- creates a new branch and working tree from the current working tree, sharing the same local GIT repository git lntree --- creates a "treeshell" sharing the same GIT repository with the current tree If you think any other of those should be renamed, this is the time to speak up. Oh well, I think I'll regret asking about this at all... ;-) Note that there is a bug in current git update - it will allow you to bring several of your trees to follow the same branch, or even a remote branch. This is not even supposed to work, and will be fixed when I get some sleep. You will be able to do git pull even on local branches, and the proper solution for this will be just tracking the branch you want to follow. So, I'll fix that tomorrow, enable you to fork to an existing but unused branch, fix git pull of remote branch by several local branches, and write a lot of documentation. Kind regards, -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Add "clone" support to lntree 2005-04-16 2:47 ` Petr Baudis @ 2005-04-16 2:58 ` Petr Baudis 2005-04-16 3:16 ` Linus Torvalds 2005-04-16 3:17 ` Daniel Barkalow 2005-04-16 3:06 ` Add "clone" support to lntree Daniel Barkalow 1 sibling, 2 replies; 29+ messages in thread From: Petr Baudis @ 2005-04-16 2:58 UTC (permalink / raw) To: Daniel Barkalow; +Cc: git Dear diary, on Sat, Apr 16, 2005 at 04:47:55AM CEST, I got a letter where Petr Baudis <pasky@ucw.cz> told me that... > git branch --- creates a branch from a given commit > (when passed empty commit, creates a branch > from the current commit and sets the working > tree to that branch) > Note that there is a bug in current git update - it will allow you to > bring several of your trees to follow the same branch, or even a remote > branch. This is not even supposed to work, and will be fixed when I get > some sleep. You will be able to do git pull even on local branches, and > the proper solution for this will be just tracking the branch you want > to follow. I must admit that I'm not entirely decided yet, so I'd love to hear your opinion. I'm wondering, whether each tree should be fixed to a certain branch. That is, you decide a name when you do git fork, and then the tree always follows that branch. (It always has to follow [be bound to] *some* branch, and each branch can be followed by only a single tree at a time.) Currently, you can at anytime "mark" a new branch (by git branch) and you can freely "rebranch" your tree (by git update). An alternative approach would be to disallow git update to "rebranch" and remove the git branch command (you'd always do git fork). From what I know, the alternative approach is nearer to what BK takes, and it would be _slightly_ simpler (maybe). OTOH the current approach is I believe more powerful, and could require less resources. WWhat do you think, -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Add "clone" support to lntree 2005-04-16 2:58 ` Petr Baudis @ 2005-04-16 3:16 ` Linus Torvalds 2005-04-16 11:39 ` Petr Baudis 2005-04-16 3:17 ` Daniel Barkalow 1 sibling, 1 reply; 29+ messages in thread From: Linus Torvalds @ 2005-04-16 3:16 UTC (permalink / raw) To: Petr Baudis; +Cc: Daniel Barkalow, git On Sat, 16 Apr 2005, Petr Baudis wrote: > > I'm wondering, whether each tree should be fixed to a certain branch. I'm wondering why you talk about "branches" at all. No such thing should exist. There are no branches. There are just repositories. You can track somebody elses repository, but you should track it by location, not by any "branch name". And you track it by just merging it. Yeah, we don't have really usable merges yet, but.. Linus ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Re: Add "clone" support to lntree 2005-04-16 3:16 ` Linus Torvalds @ 2005-04-16 11:39 ` Petr Baudis 0 siblings, 0 replies; 29+ messages in thread From: Petr Baudis @ 2005-04-16 11:39 UTC (permalink / raw) To: Linus Torvalds; +Cc: Daniel Barkalow, git Dear diary, on Sat, Apr 16, 2005 at 05:16:12AM CEST, I got a letter where Linus Torvalds <torvalds@osdl.org> told me that... > On Sat, 16 Apr 2005, Petr Baudis wrote: > > > > I'm wondering, whether each tree should be fixed to a certain branch. > > I'm wondering why you talk about "branches" at all. > > No such thing should exist. There are no branches. There are just > repositories. You can track somebody elses repository, but you should > track it by location, not by any "branch name". > > And you track it by just merging it. > > Yeah, we don't have really usable merges yet, but.. First, this "level" of branches concerns multiple working directories tied to a single repository. It seems like a sensible thing to do; and you agreed with it too (IIRC). And when you do that, git-pasky just saves some work for you. For git-pasky, branch is really just a symbolic name for a commit ID, which gets updated every time you commit in some repository. Nothing more. So the whole point of this is to have a symbolic name for some other working directory. When you want to merge, you don't need to go over to the other directory, do commit-id, cut'n'paste, and feed that to git merge. You just do git merge myotherbranch Now, about remote repositories. When you pull a remote repository, that does not mean it has to be immediately merged somewhere. It is very useful to have another branch you do *not* want to merge, but you want to do diffs to it, or even check it out / export it later to some separate directory. Again, the "branch" is just a symbolic name for the head commit ID of what you pulled, and the pointer gets updated every time you pull again - that's the whole point of it. The last concept are "tracking" working directories. If you pull the tracked branch to this directory, it also automerges it. This is useful when you have a single canonical branch for this directory, which it should always mirror. That would be the case e.g. for the gazillions of Linux users who would like to just have the latest bleeding kernel of your, and they expect to use git just like a "different CVS". Basically, they will just do git pull instead of cvs update :-). -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Add "clone" support to lntree 2005-04-16 2:58 ` Petr Baudis 2005-04-16 3:16 ` Linus Torvalds @ 2005-04-16 3:17 ` Daniel Barkalow 2005-04-16 23:33 ` Petr Baudis 1 sibling, 1 reply; 29+ messages in thread From: Daniel Barkalow @ 2005-04-16 3:17 UTC (permalink / raw) To: Petr Baudis; +Cc: git On Sat, 16 Apr 2005, Petr Baudis wrote: > Dear diary, on Sat, Apr 16, 2005 at 04:47:55AM CEST, I got a letter > where Petr Baudis <pasky@ucw.cz> told me that... > > git branch --- creates a branch from a given commit > > (when passed empty commit, creates a branch > > from the current commit and sets the working > > tree to that branch) > > Note that there is a bug in current git update - it will allow you to > > bring several of your trees to follow the same branch, or even a remote > > branch. This is not even supposed to work, and will be fixed when I get > > some sleep. You will be able to do git pull even on local branches, and > > the proper solution for this will be just tracking the branch you want > > to follow. > > I must admit that I'm not entirely decided yet, so I'd love to hear your > opinion. > > I'm wondering, whether each tree should be fixed to a certain branch. > That is, you decide a name when you do git fork, and then the tree > always follows that branch. (It always has to follow [be bound to] > *some* branch, and each branch can be followed by only a single tree at > a time.) I don't think I'm following the use of branches. Currently, what I do is have a git-pasky and a git-linus, and fork off a working directory from one of these for each thing I want to work on. I do some work, commit as I make progress, and then do a diff against the remote head to get a patch to send off. If I want to do a series of patches which depend on each other, I fork my next directory off of my previous one rather than off of a remote base. I haven't done much rebasing, so I haven't worked out how I would do that most effectively. I think I can make this space efficient by hardlinking unmodified blobs to a directory of cached expanded blobs. -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Re: Add "clone" support to lntree 2005-04-16 3:17 ` Daniel Barkalow @ 2005-04-16 23:33 ` Petr Baudis 2005-04-17 0:07 ` Daniel Barkalow 0 siblings, 1 reply; 29+ messages in thread From: Petr Baudis @ 2005-04-16 23:33 UTC (permalink / raw) To: Daniel Barkalow; +Cc: git Dear diary, on Sat, Apr 16, 2005 at 05:17:00AM CEST, I got a letter where Daniel Barkalow <barkalow@iabervon.org> told me that... > On Sat, 16 Apr 2005, Petr Baudis wrote: > > > Dear diary, on Sat, Apr 16, 2005 at 04:47:55AM CEST, I got a letter > > where Petr Baudis <pasky@ucw.cz> told me that... > > > git branch --- creates a branch from a given commit > > > (when passed empty commit, creates a branch > > > from the current commit and sets the working > > > tree to that branch) > > > Note that there is a bug in current git update - it will allow you to > > > bring several of your trees to follow the same branch, or even a remote > > > branch. This is not even supposed to work, and will be fixed when I get > > > some sleep. You will be able to do git pull even on local branches, and > > > the proper solution for this will be just tracking the branch you want > > > to follow. > > > > I must admit that I'm not entirely decided yet, so I'd love to hear your > > opinion. > > > > I'm wondering, whether each tree should be fixed to a certain branch. > > That is, you decide a name when you do git fork, and then the tree > > always follows that branch. (It always has to follow [be bound to] > > *some* branch, and each branch can be followed by only a single tree at > > a time.) > > I don't think I'm following the use of branches. Currently, what I do is > have a git-pasky and a git-linus, and fork off a working directory from > one of these for each thing I want to work on. I do some work, commit as I > make progress, and then do a diff against the remote head to get a patch > to send off. If I want to do a series of patches which depend on each > other, I fork my next directory off of my previous one rather than off of > a remote base. I haven't done much rebasing, so I haven't worked out how I > would do that most effectively. Yes. And that's exactly what the branches allow you to do. You just do git fork myhttpclient ~/myhttpclientdir then you do some hacking, and when you have something usable, you can go back to your main working directory and do git merge -b when_you_started myhttpclient Since you consider the code perfect, you can now just rm -rf ~/myhttpclient. Suddenly, you get a mail from mj pointing out some bugs, and it looks like there are more to come. What to do? git fork myhttpclient ~/myhttpclientdir (Ok, this does not work, but that's a bug, will fix tomorrow.) This will let you take off when you left in your work on the branch. git update for seeking between commits is probably extremely important for any kind of binary search when you are wondering when did this bug appeared first, or when you are exploring how certain branch evolved over time. Doing git fork for each successive iteration sounds horrible. Now, what about git branch and git update for switching between branches? I think this is the most controversial part; these are basically just shortcuts for not having to do git fork, and I wouldn't mind so much removing them, if you people really consider them too ugly a wart for the soft clean git skin. I admit that they both come from a hidden prejudice that git fork is going to be slow and eat a lot of disk. The idea for git branch is to mark a commit as "this is a branch but I don't want to git fork" (because I'm lazy or short on disk space or whatever). Let's say you are tracking a branch, do some local commits and then want to untrack. This will get you back to HEAD.local, but you want to keep a reference for your local commits, and possibly work on them more later - so you mark them as a branch. But thinking about it, I couldn't come up with another usage case than this, and I think that now that we have git fork, I will modify git track behaviour heavily so that tracking/untracking won't really switch you to the other branch completely, but really only tell git pull that you want the pulled updates applied. So git branch command will likely go. The idea for git update for switching between branches is that especially when you have two rather similar branches and mostly do stuff on one of them, but sometimes you want to do something on the other one, you can do just quick git update, do stuff, and git update back, without any forking. Note that this all is *absolutely* subject to change, provided you can convince me about some better way. ;-) My mindset on this is pretty open. This is just what seems to me as a pretty flexible and elegant to do stuff, while giving you enough freedom to pick your own style. > I think I can make this space efficient by hardlinking unmodified blobs to > a directory of cached expanded blobs. I don't know but I really feel *very* unsafe when doing that. What if something screws up and corrupts my base... way too easy. And it gets pretty inconvenient and even more dangerous when you get the idea to do some modifications on your tree by something else than your favorite editor (which you've already checked does the right thing). -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Re: Add "clone" support to lntree 2005-04-16 23:33 ` Petr Baudis @ 2005-04-17 0:07 ` Daniel Barkalow 2005-04-19 1:12 ` Petr Baudis 0 siblings, 1 reply; 29+ messages in thread From: Daniel Barkalow @ 2005-04-17 0:07 UTC (permalink / raw) To: Petr Baudis; +Cc: git On Sun, 17 Apr 2005, Petr Baudis wrote: > Dear diary, on Sat, Apr 16, 2005 at 05:17:00AM CEST, I got a letter > where Daniel Barkalow <barkalow@iabervon.org> told me that... > > On Sat, 16 Apr 2005, Petr Baudis wrote: > > > > > Dear diary, on Sat, Apr 16, 2005 at 04:47:55AM CEST, I got a letter > > > where Petr Baudis <pasky@ucw.cz> told me that... > > > > git branch --- creates a branch from a given commit > > > > (when passed empty commit, creates a branch > > > > from the current commit and sets the working > > > > tree to that branch) > > > > Note that there is a bug in current git update - it will allow you to > > > > bring several of your trees to follow the same branch, or even a remote > > > > branch. This is not even supposed to work, and will be fixed when I get > > > > some sleep. You will be able to do git pull even on local branches, and > > > > the proper solution for this will be just tracking the branch you want > > > > to follow. > > > > > > I must admit that I'm not entirely decided yet, so I'd love to hear your > > > opinion. > > > > > > I'm wondering, whether each tree should be fixed to a certain branch. > > > That is, you decide a name when you do git fork, and then the tree > > > always follows that branch. (It always has to follow [be bound to] > > > *some* branch, and each branch can be followed by only a single tree at > > > a time.) > > > > I don't think I'm following the use of branches. Currently, what I do is > > have a git-pasky and a git-linus, and fork off a working directory from > > one of these for each thing I want to work on. I do some work, commit as I > > make progress, and then do a diff against the remote head to get a patch > > to send off. If I want to do a series of patches which depend on each > > other, I fork my next directory off of my previous one rather than off of > > a remote base. I haven't done much rebasing, so I haven't worked out how I > > would do that most effectively. > > Yes. And that's exactly what the branches allow you to do. You just do > > git fork myhttpclient ~/myhttpclientdir > > then you do some hacking, and when you have something usable, you can > go back to your main working directory and do > > git merge -b when_you_started myhttpclient > > Since you consider the code perfect, you can now just rm -rf > ~/myhttpclient. > > Suddenly, you get a mail from mj pointing out some bugs, and it looks > like there are more to come. What to do? > > git fork myhttpclient ~/myhttpclientdir > > (Ok, this does not work, but that's a bug, will fix tomorrow.) This will > let you take off when you left in your work on the branch. Ah, I think that's what made me think I wasn't understanding branches; the first thing I tried hit this big. > git update for seeking between commits is probably extremely important > for any kind of binary search when you are wondering when did this bug > appeared first, or when you are exploring how certain branch evolved > over time. Doing git fork for each successive iteration sounds horrible. Even if there isn't a performance hit, it's semantically wrong, because you're looking at different versions that were in the same place at different times. > Now, what about git branch and git update for switching between > branches? I think this is the most controversial part; these are > basically just shortcuts for not having to do git fork, and I wouldn't > mind so much removing them, if you people really consider them too ugly > a wart for the soft clean git skin. I admit that they both come from a > hidden prejudice that git fork is going to be slow and eat a lot of > disk. I think that this just confuses matters. > The idea for git update for switching between branches is that > especially when you have two rather similar branches and mostly do stuff > on one of them, but sometimes you want to do something on the other one, > you can do just quick git update, do stuff, and git update back, without > any forking. I still think that fork should be quick enough, or you could leave the extra tree around. I'm not against having such a command, but I think it should be a separate command rather than a different use of update, since it would be used by poeople working in different ways. > > I think I can make this space efficient by hardlinking unmodified blobs to > > a directory of cached expanded blobs. > > I don't know but I really feel *very* unsafe when doing that. What if > something screws up and corrupts my base... way too easy. And it gets > pretty inconvenient and even more dangerous when you get the idea to do > some modifications on your tree by something else than your favorite > editor (which you've already checked does the right thing). It should only be an option, not required and maybe not even default. I think it should be possible to prevent stuff from screwing up, since we really don't want anything to ever modify those inodes (as opposed to some cases, where you want to modify inodes only in certain ways). For that matter, relatively few programs actually support modifying inodes rather than unlinking. -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Re: Add "clone" support to lntree 2005-04-17 0:07 ` Daniel Barkalow @ 2005-04-19 1:12 ` Petr Baudis 2005-04-19 2:13 ` Change "pull" to _only_ download, and "git update"=pull+merge? David A. Wheeler 0 siblings, 1 reply; 29+ messages in thread From: Petr Baudis @ 2005-04-19 1:12 UTC (permalink / raw) To: Daniel Barkalow; +Cc: git For the record, mostly... (this is how it already is in git-pasky-0.5) Dear diary, on Sun, Apr 17, 2005 at 02:07:36AM CEST, I got a letter where Daniel Barkalow <barkalow@iabervon.org> told me that... > > Now, what about git branch and git update for switching between > > branches? I think this is the most controversial part; these are > > basically just shortcuts for not having to do git fork, and I wouldn't > > mind so much removing them, if you people really consider them too ugly > > a wart for the soft clean git skin. I admit that they both come from a > > hidden prejudice that git fork is going to be slow and eat a lot of > > disk. > > I think that this just confuses matters. I killed them both for good. > > The idea for git update for switching between branches is that > > especially when you have two rather similar branches and mostly do stuff > > on one of them, but sometimes you want to do something on the other one, > > you can do just quick git update, do stuff, and git update back, without > > any forking. > > I still think that fork should be quick enough, or you could leave the > extra tree around. I'm not against having such a command, but I think it > should be a separate command rather than a different use of update, since > it would be used by poeople working in different ways. I've removed git branch, removed the possibility for git update to switch branches and renamed git update to git seek. You can do git seek git-pasky-0.1 and examine stuff, but your tree is also blocked at the same time - git won't let you commit, merge and such. By doing git seek or git seek master you return back to your branch (assuming its name is master). I think git fork is after all good enough for branching and it is the clean way. Shall there be a big demand for it, it should be minimal hassle to implement 'git switch', which would do that. -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 1:12 ` Petr Baudis @ 2005-04-19 2:13 ` David A. Wheeler 2005-04-19 9:18 ` David Greaves 0 siblings, 1 reply; 29+ messages in thread From: David A. Wheeler @ 2005-04-19 2:13 UTC (permalink / raw) To: Petr Baudis; +Cc: Daniel Barkalow, git This is a minor UI thing, but what the heck. I propose changing "pull" to ONLY download, and "update" to pull AND merge. Whenever you want to update, just say "git update", end of story. Why? It seems oddly inconsistent that "pull" sometimes merges in changes, but at other times it doesn't. If I normally track someone, but temporarily don't want to (I'm in the middle of lots of changes but I _do_ want to see what's going on), I have to "untrack", pull, and then "retrack" again (remembering who I once tracked, which may be more of a trick over time). Maybe more important, that is more annoying when you're trying to "just pull data" from a script; I need to do the untrack, pull, & retrack shuffle just to download data. I propose that there be two subcommands, "pull" and "update" (now that "update" isn't a reserved word again). A "git pull" ONLY downloads; a "git update" pulls AND merges. That means each command does exactly one thing, very simple & clean to explain. Also, some tools (such as subversion) already use "update" as meaning this (auto download & merge from the given repository), so the terminology would make sense for some. I'd be happy to send in a patch to do that. The coding is trivial, but it means a UI change in one of the most common commands (use "update" instead of "pull" in the typical case). I could add a "reminder" message after pulling, to let people adjust to the new commands for a little while. --- David A. Wheeler ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 2:13 ` Change "pull" to _only_ download, and "git update"=pull+merge? David A. Wheeler @ 2005-04-19 9:18 ` David Greaves 2005-04-19 9:28 ` Petr Baudis 0 siblings, 1 reply; 29+ messages in thread From: David Greaves @ 2005-04-19 9:18 UTC (permalink / raw) To: dwheeler; +Cc: Petr Baudis, Daniel Barkalow, git David A. Wheeler wrote: > I propose changing "pull" to ONLY download, and "update" to pull AND merge. > Why? It seems oddly inconsistent that "pull" sometimes merges > in changes, but at other times it doesn't. true > I propose that there be two subcommands, "pull" and "update" > (now that "update" isn't a reserved word again). > A "git pull" ONLY downloads; a "git update" pulls AND merges. What's the most common thing to do? pull or update? which is easier to type? what are people used to? I'm not sure but I suggest that pull and get would be better choices. git pull git get is it rare enough to justify: git --download-only pull David -- ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 9:18 ` David Greaves @ 2005-04-19 9:28 ` Petr Baudis 2005-04-19 10:05 ` Martin Schlemmer 0 siblings, 1 reply; 29+ messages in thread From: Petr Baudis @ 2005-04-19 9:28 UTC (permalink / raw) To: David Greaves; +Cc: dwheeler, Daniel Barkalow, git Dear diary, on Tue, Apr 19, 2005 at 11:18:55AM CEST, I got a letter where David Greaves <david@dgreaves.com> told me that... > What's the most common thing to do? pull or update? update for normal users. > which is easier to type? > what are people used to? I think 'git up' is easier to type than 'git pull'. It's the CVS/SVN tradition, though, probably not the BK tradition. > I'm not sure but I suggest that pull and get would be better choices. > > git pull > git get I don't like git get; it is something completely new - not in CVS/SVN and means something completely different in BK, apparently. > is it rare enough to justify: > git --download-only pull Dunno. I do it personally all the time, with git at least. What do others think? :-) I start to like the pull/update distinction, and I think I'll go for it. -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 9:28 ` Petr Baudis @ 2005-04-19 10:05 ` Martin Schlemmer 2005-04-19 10:50 ` Petr Baudis 0 siblings, 1 reply; 29+ messages in thread From: Martin Schlemmer @ 2005-04-19 10:05 UTC (permalink / raw) To: Petr Baudis; +Cc: David Greaves, dwheeler, Daniel Barkalow, git [-- Attachment #1: Type: text/plain, Size: 533 bytes --] On Tue, 2005-04-19 at 11:28 +0200, Petr Baudis wrote: > Dear diary, on Tue, Apr 19, 2005 at 11:18:55AM CEST, I got a letter > where David Greaves <david@dgreaves.com> told me that... > > Dunno. I do it personally all the time, with git at least. > > What do others think? :-) > I think pull is pull. If you are doing lots of local stuff and do not want it overwritten, it should have been in a forked branch. > I start to like the pull/update distinction, and I think I'll go for it. > -- Martin Schlemmer [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 10:05 ` Martin Schlemmer @ 2005-04-19 10:50 ` Petr Baudis 2005-04-19 13:54 ` Jon Seymour ` (3 more replies) 0 siblings, 4 replies; 29+ messages in thread From: Petr Baudis @ 2005-04-19 10:50 UTC (permalink / raw) To: Martin Schlemmer; +Cc: David Greaves, dwheeler, Daniel Barkalow, git Dear diary, on Tue, Apr 19, 2005 at 12:05:10PM CEST, I got a letter where Martin Schlemmer <azarah@nosferatu.za.org> told me that... > On Tue, 2005-04-19 at 11:28 +0200, Petr Baudis wrote: > > Dear diary, on Tue, Apr 19, 2005 at 11:18:55AM CEST, I got a letter > > where David Greaves <david@dgreaves.com> told me that... > > > > Dunno. I do it personally all the time, with git at least. > > > > What do others think? :-) > > > > I think pull is pull. If you are doing lots of local stuff and do not > want it overwritten, it should have been in a forked branch. I disagree. This already forces you to have two branches (one to pull from to get the data, mirroring the remote branch, one for your real work) uselessly and needlessly. I think there is just no good name for what pull is doing now, and update seems like a great name for what pull-and-merge really is. Pull really is pull - it _pulls_ the data, while update also updates the given tree. No surprises. (We should obviously have also update-without-pull but that is probably not going to be so common so a parameter for update (like -n) should be fine for that.) These naming issues may appear silly but I think they matter big time for usability, intuitiveness, and learning curve (I don't want git-pasky become another GNU arch). Kind regards, -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 10:50 ` Petr Baudis @ 2005-04-19 13:54 ` Jon Seymour 2005-04-19 14:40 ` Martin Schlemmer ` (2 subsequent siblings) 3 siblings, 0 replies; 29+ messages in thread From: Jon Seymour @ 2005-04-19 13:54 UTC (permalink / raw) To: Petr Baudis Cc: Martin Schlemmer, David Greaves, dwheeler, Daniel Barkalow, git > I disagree. This already forces you to have two branches (one to pull > from to get the data, mirroring the remote branch, one for your real > work) uselessly and needlessly. > > ... > These naming issues may appear silly but I think they matter big time > for usability, intuitiveness, and learning curve (I don't want git-pasky > become another GNU arch). > Not that it is worth that much, but my $0.02 is that Petr is right on this one. I want something that allows me to get the objects into my local repository without funking with my working directory. As a long time CVS user, "git update" would do what I expect it to. I don't have any pre-conceptions about what "pull" does, so it doesn't phase me if pull is used for this purpose. However, perhaps pull means something in some other SCM that would cause confusion for others? Some alternatives to "pull" are offered: hoard, gather, make-local, download. Regards, jon. -- homepage: http://www.zeta.org.au/~jon/ blog: http://orwelliantremors.blogspot.com/ ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 10:50 ` Petr Baudis 2005-04-19 13:54 ` Jon Seymour @ 2005-04-19 14:40 ` Martin Schlemmer 2005-04-19 18:28 ` Daniel Barkalow 2005-04-20 7:01 ` Ingo Molnar 3 siblings, 0 replies; 29+ messages in thread From: Martin Schlemmer @ 2005-04-19 14:40 UTC (permalink / raw) To: Petr Baudis; +Cc: David Greaves, dwheeler, Daniel Barkalow, git [-- Attachment #1: Type: text/plain, Size: 1995 bytes --] On Tue, 2005-04-19 at 12:50 +0200, Petr Baudis wrote: > Dear diary, on Tue, Apr 19, 2005 at 12:05:10PM CEST, I got a letter > where Martin Schlemmer <azarah@nosferatu.za.org> told me that... > > On Tue, 2005-04-19 at 11:28 +0200, Petr Baudis wrote: > > > Dear diary, on Tue, Apr 19, 2005 at 11:18:55AM CEST, I got a letter > > > where David Greaves <david@dgreaves.com> told me that... > > > > > > Dunno. I do it personally all the time, with git at least. > > > > > > What do others think? :-) > > > > > > > I think pull is pull. If you are doing lots of local stuff and do not > > want it overwritten, it should have been in a forked branch. > > I disagree. This already forces you to have two branches (one to pull > from to get the data, mirroring the remote branch, one for your real > work) uselessly and needlessly. > > I think there is just no good name for what pull is doing now, and > update seems like a great name for what pull-and-merge really is. Pull > really is pull - it _pulls_ the data, while update also updates the > given tree. No surprises. > > (We should obviously have also update-without-pull but that is probably > not going to be so common so a parameter for update (like -n) should be > fine for that.) > > These naming issues may appear silly but I think they matter big time > for usability, intuitiveness, and learning curve (I don't want git-pasky > become another GNU arch). > Ok, so 'pull' do the bk thing, and 'update' do the cvs thing. I think however you should do either do one or the other. Maybe drop the 'update', and rather add 'checkout' (or 'co' for short) which will update the tree (or merge with local changes if needed). Then you have two distinct separate things (ok, so pretty much how bk do things). This will also enable you to make 'fork', 'export', etc just do the right thing with the database, but leave 'checkout' up to the user if he wants to do so. -- Martin Schlemmer [-- Attachment #2: This is a digitally signed message part --] [-- Type: application/pgp-signature, Size: 189 bytes --] ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 10:50 ` Petr Baudis 2005-04-19 13:54 ` Jon Seymour 2005-04-19 14:40 ` Martin Schlemmer @ 2005-04-19 18:28 ` Daniel Barkalow 2005-04-19 22:39 ` David A. Wheeler 2005-04-20 7:01 ` Ingo Molnar 3 siblings, 1 reply; 29+ messages in thread From: Daniel Barkalow @ 2005-04-19 18:28 UTC (permalink / raw) To: Petr Baudis; +Cc: Martin Schlemmer, David Greaves, dwheeler, git On Tue, 19 Apr 2005, Petr Baudis wrote: > I disagree. This already forces you to have two branches (one to pull > from to get the data, mirroring the remote branch, one for your real > work) uselessly and needlessly. If you pull in a non-tracked tree, it certainly won't apply the changes, so you can just have your local tree and pull other people's trees as desired. > I think there is just no good name for what pull is doing now, and > update seems like a great name for what pull-and-merge really is. Pull > really is pull - it _pulls_ the data, while update also updates the > given tree. No surprises. I'm actually getting suspicious that the right thing is to hide "pull" in the id scheme. That is, instead of saying "linus" to refer to the "linus" head that you currently have, you say "+linus" to refer to the head Linus has on his server currently, and this will cause you to download anything necessary to perform the operation with the resulting value. See, I don't think you ever want to just pull. You want to pull-and-do-something, but the something could be any operation that uses a commit, not necessarily update. So you could do "git diff -r +linus" to compare your head against current linus. You'd want "git update" to take a working directory from "linus" to "+linus" (just because you know Linus's more recent head doesn't mean you're automatically using it). You could just "git merge +linus" in your working directory to sync with Linus. Even "git log +linus" to see his recent changes. I think the only reason not to just make any reference to a head pull it is performance on looking up the head; you don't really want to hammer the server getting these 40-byte files constantly or wait for a connection every time (not to mention the possibility of not being able to connect). But there's no reason to want to not have the latest data, since the older data doesn't go away. -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 18:28 ` Daniel Barkalow @ 2005-04-19 22:39 ` David A. Wheeler 2005-04-19 23:20 ` Daniel Barkalow 0 siblings, 1 reply; 29+ messages in thread From: David A. Wheeler @ 2005-04-19 22:39 UTC (permalink / raw) To: Daniel Barkalow; +Cc: Petr Baudis, Martin Schlemmer, David Greaves, git Daniel Barkalow wrote: >See, I don't think you ever want to just pull. You want to >pull-and-do-something, but the something could be any operation... In a _logical_ sense that's true; I'd only want to pull data if I intended to (possibly) do something with it. But as a _practical_ matter, I can see lots of reasons for doing a pull as a separate operation. One is disconnected operation; I may want to pull the data now, to prepare for disconnectino, and then work later while disconnected. Another is using lots of data compared to the pipesize; if I have a dial-in modem, or I want the history of the linux kernel since 0.0.1, I might want to "pull" & go away/go to sleep for the night. I might use cron/at to automatically "pull" at 3am from some interesting branches. The next day, I could then "pull" again to update just what changed, and/or do the operation I intended to do if the operation auto-pulls the missing data. >I'm actually getting suspicious that the right thing is to hide "pull" in the id scheme. That is, instead of saying "linus" to refer to the >"linus" head that you currently have, you say "+linus" to refer to the >head Linus has on his server currently, and this will cause you to >download anything necessary to perform the operation with the resulting value. > > That's an interesting idea. I'll have to think about that. What command would you suggest for the common case of "update with current track?" I've proposed "git update [NAME]". "git merge" with update-from-current-track as default seems unclear, and I worry that I might accidentally press RETURN too soon & merge with the wrong thing. And I like the idea of "git update" doing the same thing (essentially) as "cvs update" and "svn update"; LOTS of people "know" what update does, so using the same command name for one of the most common operations smooths transition (GNU Arch's "tla update" is almost, though not exactly, the same too.) I still think it's important to have a very simple command that updates your current branch with a tracked branch (because it's common to stay in sync with a master branch), and a way to just download the data without doing things with it YET (because you want to do things in stages). The commands "update" and "pull" come to mind when thinking that way, though as long as the commands are simple & clear that's a good thing (I think it's a GOOD idea to use the same commands as CVS and Subversion when the results are essentially the same, just because so many people are already familiar with them, but only where it makes sense.) --- David A. Wheeler ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 22:39 ` David A. Wheeler @ 2005-04-19 23:20 ` Daniel Barkalow 0 siblings, 0 replies; 29+ messages in thread From: Daniel Barkalow @ 2005-04-19 23:20 UTC (permalink / raw) To: David A. Wheeler; +Cc: Petr Baudis, Martin Schlemmer, David Greaves, git On Tue, 19 Apr 2005, David A. Wheeler wrote: > In a _logical_ sense that's true; I'd only want to pull data if I intended > to (possibly) do something with it. But as a _practical_ matter, > I can see lots of reasons for doing a pull as a separate operation. > One is disconnected operation; (...) That's true. I think I actually like "git pull" as the operation for "make sure I have everything I need, so I can lose net". > What command would you suggest for the common case > of "update with current track?" I've proposed "git update [NAME]". > "git merge" with update-from-current-track as default seems unclear, and > I worry that I might accidentally press RETURN too soon & merge with > the wrong thing. And I like the idea of "git update" doing the same thing > (essentially) as "cvs update" and "svn update"; LOTS of people "know" > what update does, so using the same command name for one of the most > common operations smooths transition (GNU Arch's "tla update" > is almost, though not exactly, the same too.) I think that having "git update" update a tracked branch is best, if only as an aid to discoverability. And "git merge" should require you to say what you want to merge with, because it's too easy to pick a wrong default, and the user had better know. It seems to me like this makes "update" identical to "merge <tracked>", so "update [NAME]" and "merge" don't make sense, since they'd do the other command, but less intuitively. -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-19 10:50 ` Petr Baudis ` (2 preceding siblings ...) 2005-04-19 18:28 ` Daniel Barkalow @ 2005-04-20 7:01 ` Ingo Molnar 2005-04-20 20:05 ` Petr Baudis 3 siblings, 1 reply; 29+ messages in thread From: Ingo Molnar @ 2005-04-20 7:01 UTC (permalink / raw) To: Petr Baudis Cc: Martin Schlemmer, David Greaves, dwheeler, Daniel Barkalow, git * Petr Baudis <pasky@ucw.cz> wrote: > > I think pull is pull. If you are doing lots of local stuff and do not > > want it overwritten, it should have been in a forked branch. > > I disagree. This already forces you to have two branches (one to pull > from to get the data, mirroring the remote branch, one for your real > work) uselessly and needlessly. > > I think there is just no good name for what pull is doing now, and > update seems like a great name for what pull-and-merge really is. Pull > really is pull - it _pulls_ the data, while update also updates the > given tree. No surprises. yeah. In fact most of the times i did 'git pull pasky' in the past, the 'merge' phase was unsuccessful, and i had to nuke the tree and recreate it. All i did with the snapshots was to build them, so there were no local changes. Waiting a couple of days with doing a 'git pull pasky', or installing Linus' tree is a sure way to break the merging. e.g. to reproduce the last such failure i had today, do: cd git-pasky-base echo 8568e1a88c086d1b72b0e84ab24fa6888b5861b9 > .git/HEAD read-tree $(tree-id $(cat .git/HEAD)) checkout-cache -a -f make make install # make sure to use the older tools rm -rf .git/objects git pull pasky and i get: [...] fatal: unable to execute 'gitmerge-file.sh' fatal: merge program failed Conflicts during merge. Do git commit after resolving them. note that with earlier versions of pasky, i had other merge conflicts. Sometimes there were .rej files, sometimes some sort of script failure. So it seems rather unrobust at the moment. Especially if i happen to install Linus' tree and try to sync the pasky tree with those tools. another thing: it's confusing that during 'git pull', the rsync output is not visible. Especially during large rsyncs, it would be nice to see some progress. So i usually use a raw rsync not 'git pull', due to this. yet another thing: what is the canonical 'pasky way' of simply nuking the current files and checking out the latest tree (according to .git/HEAD). Right now i'm using a script to: read-tree $(tree-id $(cat .git/HEAD)) checkout-cache -a (i first do an 'rm -f *' in the working directory) i guess there's an existing command for this already? Ingo ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-20 7:01 ` Ingo Molnar @ 2005-04-20 20:05 ` Petr Baudis 2005-04-20 20:32 ` Ingo Molnar 2005-04-20 20:45 ` Ingo Molnar 0 siblings, 2 replies; 29+ messages in thread From: Petr Baudis @ 2005-04-20 20:05 UTC (permalink / raw) To: Ingo Molnar Cc: Martin Schlemmer, David Greaves, dwheeler, Daniel Barkalow, git Dear diary, on Wed, Apr 20, 2005 at 09:01:57AM CEST, I got a letter where Ingo Molnar <mingo@elte.hu> told me that... > [...] > fatal: unable to execute 'gitmerge-file.sh' > fatal: merge program failed Pure stupidity of mine, I forgot to add gitmerge-file.sh to the list of scripts which get installed. > another thing: it's confusing that during 'git pull', the rsync output > is not visible. Especially during large rsyncs, it would be nice to see > some progress. So i usually use a raw rsync not 'git pull', due to this. Fixed. For further reference, you can also set RSYNC_FLAGS and put whatever pleases you there. > yet another thing: what is the canonical 'pasky way' of simply nuking > the current files and checking out the latest tree (according to > .git/HEAD). Right now i'm using a script to: > > read-tree $(tree-id $(cat .git/HEAD)) > checkout-cache -a > > (i first do an 'rm -f *' in the working directory) > > i guess there's an existing command for this already? git cancel -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-20 20:05 ` Petr Baudis @ 2005-04-20 20:32 ` Ingo Molnar 2005-04-20 20:45 ` Ingo Molnar 1 sibling, 0 replies; 29+ messages in thread From: Ingo Molnar @ 2005-04-20 20:32 UTC (permalink / raw) To: Petr Baudis Cc: Martin Schlemmer, David Greaves, dwheeler, Daniel Barkalow, git * Petr Baudis <pasky@ucw.cz> wrote: > > yet another thing: what is the canonical 'pasky way' of simply nuking > > the current files and checking out the latest tree (according to > > .git/HEAD). Right now i'm using a script to: > > > > read-tree $(tree-id $(cat .git/HEAD)) > > checkout-cache -a > > > > (i first do an 'rm -f *' in the working directory) > > > > i guess there's an existing command for this already? > > git cancel hm, that's a pretty unintuitive name though. How about making it 'git checkout' and providing a 'git checkout -f' option to force the checkout? (or something like this) Ingo ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-20 20:05 ` Petr Baudis 2005-04-20 20:32 ` Ingo Molnar @ 2005-04-20 20:45 ` Ingo Molnar 2005-04-20 21:15 ` Petr Baudis 1 sibling, 1 reply; 29+ messages in thread From: Ingo Molnar @ 2005-04-20 20:45 UTC (permalink / raw) To: Petr Baudis Cc: Martin Schlemmer, David Greaves, dwheeler, Daniel Barkalow, git * Petr Baudis <pasky@ucw.cz> wrote: > Dear diary, on Wed, Apr 20, 2005 at 09:01:57AM CEST, I got a letter > where Ingo Molnar <mingo@elte.hu> told me that... > > [...] > > fatal: unable to execute 'gitmerge-file.sh' > > fatal: merge program failed > > Pure stupidity of mine, I forgot to add gitmerge-file.sh to the list of > scripts which get installed. another thing is this annoying message: rsync: link_stat "/linux/kernel/people/torvalds/git.git/tags" (in pub) failed: No such file or directory (2) rsync error: some files could not be transferred (code 23) at main.c(812) client: nothing to do: perhaps you need to specify some filenames or the --recursive option? you said before that it's "harmless", but it's annoying nevertheless as one doesnt know for sure whether the pull went fine. Ingo ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-20 20:45 ` Ingo Molnar @ 2005-04-20 21:15 ` Petr Baudis 2005-04-20 23:58 ` David Mansfield 0 siblings, 1 reply; 29+ messages in thread From: Petr Baudis @ 2005-04-20 21:15 UTC (permalink / raw) To: Ingo Molnar Cc: Martin Schlemmer, David Greaves, dwheeler, Daniel Barkalow, git Dear diary, on Wed, Apr 20, 2005 at 10:32:35PM CEST, I got a letter where Ingo Molnar <mingo@elte.hu> told me that... > > * Petr Baudis <pasky@ucw.cz> wrote: > > > > yet another thing: what is the canonical 'pasky way' of simply nuking > > > the current files and checking out the latest tree (according to > > > .git/HEAD). Right now i'm using a script to: > > > > > > read-tree $(tree-id $(cat .git/HEAD)) > > > checkout-cache -a > > > > > > (i first do an 'rm -f *' in the working directory) > > > > > > i guess there's an existing command for this already? > > > > git cancel > > hm, that's a pretty unintuitive name though. How about making it 'git > checkout' and providing a 'git checkout -f' option to force the > checkout? (or something like this) Since it does not really checkout. Ok, it does, but that's only small part of it. It just cancels whatever local changes are you doing in the tree and bring it to consistent state. When you have a merge in progress and after you see the sheer number of conflicts you decide to get your hands off, you type just git cancel. Doing basically anything with your tree (not only local changes checkout would fix, but also various git operations, including git add/rm and git seek) can be easily fixed by git cancel. Dear diary, on Wed, Apr 20, 2005 at 10:45:51PM CEST, I got a letter where Ingo Molnar <mingo@elte.hu> told me that... > > * Petr Baudis <pasky@ucw.cz> wrote: > > > Dear diary, on Wed, Apr 20, 2005 at 09:01:57AM CEST, I got a letter > > where Ingo Molnar <mingo@elte.hu> told me that... > > > [...] > > > fatal: unable to execute 'gitmerge-file.sh' > > > fatal: merge program failed > > > > Pure stupidity of mine, I forgot to add gitmerge-file.sh to the list of > > scripts which get installed. > > another thing is this annoying message: > > rsync: link_stat "/linux/kernel/people/torvalds/git.git/tags" (in pub) > failed: No such file or directory (2) > rsync error: some files could not be transferred (code 23) at > main.c(812) > client: nothing to do: perhaps you need to specify some filenames or > the --recursive option? > > you said before that it's "harmless", but it's annoying nevertheless as > one doesnt know for sure whether the pull went fine. Already fixed. (Well, "fixed"... sent to /dev/null. ;-) -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Change "pull" to _only_ download, and "git update"=pull+merge? 2005-04-20 21:15 ` Petr Baudis @ 2005-04-20 23:58 ` David Mansfield 0 siblings, 0 replies; 29+ messages in thread From: David Mansfield @ 2005-04-20 23:58 UTC (permalink / raw) To: Petr Baudis Cc: Ingo Molnar, Martin Schlemmer, David Greaves, dwheeler, Daniel Barkalow, git Petr Baudis wrote: > Dear diary, on Wed, Apr 20, 2005 at 10:32:35PM CEST, I got a letter > where Ingo Molnar <mingo@elte.hu> told me that... > >>* Petr Baudis <pasky@ucw.cz> wrote: >> >> >>>>yet another thing: what is the canonical 'pasky way' of simply nuking >>>>the current files and checking out the latest tree (according to >>>>.git/HEAD). Right now i'm using a script to: >>>> >>>> read-tree $(tree-id $(cat .git/HEAD)) >>>> checkout-cache -a >>>> >>>>(i first do an 'rm -f *' in the working directory) >>>> >>>>i guess there's an existing command for this already? >>> >>>git cancel >> >>hm, that's a pretty unintuitive name though. How about making it 'git >>checkout' and providing a 'git checkout -f' option to force the >>checkout? (or something like this) > > > Since it does not really checkout. Ok, it does, but that's only small > part of it. It just cancels whatever local changes are you doing in the > tree and bring it to consistent state. When you have a merge in progress > and after you see the sheer number of conflicts you decide to get your > hands off, you type just git cancel. Doing basically anything with your > tree (not only local changes checkout would fix, but also various git > operations, including git add/rm and git seek) can be easily fixed by > git cancel. How about 'git revert'? Most editors and word processors use that idiom for revert to saved copy, with the obvious parallel here. David ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Add "clone" support to lntree 2005-04-16 2:47 ` Petr Baudis 2005-04-16 2:58 ` Petr Baudis @ 2005-04-16 3:06 ` Daniel Barkalow 2005-04-16 23:00 ` Petr Baudis 1 sibling, 1 reply; 29+ messages in thread From: Daniel Barkalow @ 2005-04-16 3:06 UTC (permalink / raw) To: Petr Baudis; +Cc: git On Sat, 16 Apr 2005, Petr Baudis wrote: > Dear diary, on Sat, Apr 16, 2005 at 03:56:03AM CEST, I got a letter > where Daniel Barkalow <barkalow@iabervon.org> told me that... > > I often want to take a base tree, which I keep tracking some remote head, > > and make a local working tree that starts from it. This makes "git ln -c > > <dest>" give you a tree that you can just start working in and then diff > > against the head you'd started from and send off. > > > > Signed-Off-By: Daniel Barkalow <barkalow@iabervon.org> > > I'm sorry but you are late, I added it about a hour and half ago or so. > :-) Check git fork. (I *want* separate command than git lntree. In fact, > I think I should make git lntree gitXlntree.sh instead, since it is > really internal command for git-tools and the user should probably never > need it for anything. git lntree is too lowlevel.) Have you not pushed since? I don't see it. I actually first made gitlntree.sh do the forking thing, because it didn't seem useful as is, until I noticed that merge was already using it internally. > Actually, I don't like the name at all, though. Some people may find > pondering about names pointless, but when I'm going to type them in > every day for the rest of my life, they better should not be stupid. ;-) > > So, what are your clever ideas about git fork's proper name? Or should > we leave it as is? I think "fork" is as good as anything for describing the operation. I had thought about "clone" because it seemed to fill the role that "bk clone" had (although I never used BK, so I'm not sure). It doesn't seem useful to me to try cloning multiple remote repositories, since you'd get a copy of anything common from each; you just want to suck everything into the same .git/objects and split off working directories. -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Add "clone" support to lntree 2005-04-16 3:06 ` Add "clone" support to lntree Daniel Barkalow @ 2005-04-16 23:00 ` Petr Baudis 2005-04-16 23:07 ` Daniel Barkalow 0 siblings, 1 reply; 29+ messages in thread From: Petr Baudis @ 2005-04-16 23:00 UTC (permalink / raw) To: Daniel Barkalow; +Cc: git Dear diary, on Sat, Apr 16, 2005 at 05:06:54AM CEST, I got a letter where Daniel Barkalow <barkalow@iabervon.org> told me that... > On Sat, 16 Apr 2005, Petr Baudis wrote: > > I'm sorry but you are late, I added it about a hour and half ago or so. > > :-) Check git fork. (I *want* separate command than git lntree. In fact, > > I think I should make git lntree gitXlntree.sh instead, since it is > > really internal command for git-tools and the user should probably never > > need it for anything. git lntree is too lowlevel.) > > Have you not pushed since? I don't see it. See my last mail. :-) > I think "fork" is as good as anything for describing the operation. I had > thought about "clone" because it seemed to fill the role that "bk > clone" had (although I never used BK, so I'm not sure). It doesn't seem > useful to me to try cloning multiple remote repositories, since you'd get > a copy of anything common from each; you just want to suck everything into > the same .git/objects and split off working directories. Actually, what about if git pull outside of repository did what git clone does now? I'd kinda like clone instead of fork too. -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Add "clone" support to lntree 2005-04-16 23:00 ` Petr Baudis @ 2005-04-16 23:07 ` Daniel Barkalow 2005-04-16 23:44 ` Petr Baudis 0 siblings, 1 reply; 29+ messages in thread From: Daniel Barkalow @ 2005-04-16 23:07 UTC (permalink / raw) To: Petr Baudis; +Cc: git On Sun, 17 Apr 2005, Petr Baudis wrote: > Dear diary, on Sat, Apr 16, 2005 at 05:06:54AM CEST, I got a letter > where Daniel Barkalow <barkalow@iabervon.org> told me that... > > > I think "fork" is as good as anything for describing the operation. I had > > thought about "clone" because it seemed to fill the role that "bk > > clone" had (although I never used BK, so I'm not sure). It doesn't seem > > useful to me to try cloning multiple remote repositories, since you'd get > > a copy of anything common from each; you just want to suck everything into > > the same .git/objects and split off working directories. > > Actually, what about if git pull outside of repository did what git > clone does now? I'd kinda like clone instead of fork too. This seems like the best solution to me, too. Although that would make pull take a URL when making a new repository and not otherwise, which might be confusing. "init-remote" perhaps, or maybe just have "init" do it if given a URL? -Daniel *This .sig left intentionally blank* ^ permalink raw reply [flat|nested] 29+ messages in thread
* Re: Re: Re: Add "clone" support to lntree 2005-04-16 23:07 ` Daniel Barkalow @ 2005-04-16 23:44 ` Petr Baudis 0 siblings, 0 replies; 29+ messages in thread From: Petr Baudis @ 2005-04-16 23:44 UTC (permalink / raw) To: Daniel Barkalow; +Cc: git Dear diary, on Sun, Apr 17, 2005 at 01:07:35AM CEST, I got a letter where Daniel Barkalow <barkalow@iabervon.org> told me that... > > Actually, what about if git pull outside of repository did what git > > clone does now? I'd kinda like clone instead of fork too. > > This seems like the best solution to me, too. Although that would make > pull take a URL when making a new repository and not otherwise, which > might be confusing. "init-remote" perhaps, or maybe just have "init" do it > if given a URL? Yes, init taking URL optionally sounds ideal. Thanks. -- Petr "Pasky" Baudis Stuff: http://pasky.or.cz/ C++: an octopus made by nailing extra legs onto a dog. -- Steve Taylor ^ permalink raw reply [flat|nested] 29+ messages in thread
end of thread, other threads:[~2005-04-20 23:55 UTC | newest] Thread overview: 29+ messages (download: mbox.gz / follow: Atom feed) -- links below jump to the message on this page -- 2005-04-16 1:56 [PATCH] Add "clone" support to lntree Daniel Barkalow 2005-04-16 2:47 ` Petr Baudis 2005-04-16 2:58 ` Petr Baudis 2005-04-16 3:16 ` Linus Torvalds 2005-04-16 11:39 ` Petr Baudis 2005-04-16 3:17 ` Daniel Barkalow 2005-04-16 23:33 ` Petr Baudis 2005-04-17 0:07 ` Daniel Barkalow 2005-04-19 1:12 ` Petr Baudis 2005-04-19 2:13 ` Change "pull" to _only_ download, and "git update"=pull+merge? David A. Wheeler 2005-04-19 9:18 ` David Greaves 2005-04-19 9:28 ` Petr Baudis 2005-04-19 10:05 ` Martin Schlemmer 2005-04-19 10:50 ` Petr Baudis 2005-04-19 13:54 ` Jon Seymour 2005-04-19 14:40 ` Martin Schlemmer 2005-04-19 18:28 ` Daniel Barkalow 2005-04-19 22:39 ` David A. Wheeler 2005-04-19 23:20 ` Daniel Barkalow 2005-04-20 7:01 ` Ingo Molnar 2005-04-20 20:05 ` Petr Baudis 2005-04-20 20:32 ` Ingo Molnar 2005-04-20 20:45 ` Ingo Molnar 2005-04-20 21:15 ` Petr Baudis 2005-04-20 23:58 ` David Mansfield 2005-04-16 3:06 ` Add "clone" support to lntree Daniel Barkalow 2005-04-16 23:00 ` Petr Baudis 2005-04-16 23:07 ` Daniel Barkalow 2005-04-16 23:44 ` Petr Baudis
Code repositories for project(s) associated with this public inbox https://80x24.org/mirrors/git.git 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 read-only IMAP folder(s) and NNTP newsgroup(s).