[Top][All Lists]

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[Gnu-arch-users] an IRC introduction to arch

From: Colin Walters
Subject: [Gnu-arch-users] an IRC introduction to arch
Date: Tue, 02 Sep 2003 00:49:04 -0400


Now that I've switched Rhythmbox to arch, a potential developer started
asking me questions about it on IRC, because he doesn't have GNOME CVS
commit access and wanted to make some changes.  This turned into what I
think was a really good conversation about arch, from a newbie
perspective.  If you're an arch veteran, this is all old hat, but I
think it could be a fairly good read for people trying to learn arch.

So here it is, I hope others find it useful:

Sep 01 14:30:45 <desrt> walter; can you give me an up-to-date cvs rsync thing 
Sep 01 14:31:18 <walters>       actually
Sep 01 14:31:20 <walters>       even better
Sep 01 14:31:23 <walters>       i can give you an arch tree
Sep 01 14:31:27 <walters>       i just switched to using arch myself
Sep 01 14:31:31 <desrt> emerge arch?
Sep 01 14:31:36 <walters>       you want tla
Sep 01 14:31:44 <desrt> !!! all ebuilds that could satisfy "tla" have been 
Sep 01 14:31:45 <desrt> bah
Sep 01 14:31:56 <desrt> installing.
Sep 01 14:31:59 <walters>       cool
Sep 01 14:32:07 <walters>       the nice thing about arch is
Sep 01 14:32:11 <walters>       you can create a local branch
Sep 01 14:32:14 <walters>       start committing on it
Sep 01 14:32:23 <walters>       do whatever you like, even without write access 
to my tree
Sep 01 14:32:29 <desrt> cool.
Sep 01 14:32:32 <walters>       then later, you can say "please pull these 
changes from my tree"
Sep 01 14:32:35 <walters>       and i do it
Sep 01 14:32:45 <walters>       and we can merge repeatedly, no problems with 
multiply applied patches
Sep 01 14:32:56 <desrt> then it gets pushed up to the master cvs on your next 
(daily or whatever) merge
Sep 01 14:33:05 <walters>       right
Sep 01 14:33:09 <desrt> very cool
Sep 01 14:33:20 <desrt> can i check out one of your local trees?
Sep 01 14:33:24 <walters>       yes
Sep 01 14:33:26 <desrt> just to see what you're up to?
Sep 01 14:33:26 <desrt> cool
Sep 01 14:33:31 <walters>       my full archive is mirrored on
Sep 01 14:33:46 <walters>       i'm doing rhythmdb in a separate branch right 
Sep 01 14:34:01 <walters>       also the rb website is in arch, should you wnat 
to hack
Sep 01 14:34:01 <desrt> ie: i'll be able to actually build what i download
Sep 01 14:34:11 <walters>       treed: it's not *quite* ready for mass 
primetime yet
Sep 01 14:34:33 <walters>       well, supporting arch is pretty easy
Sep 01 14:34:36 <walters>       you provide sftp
Sep 01 14:34:37 <walters>       that's it
Sep 01 14:34:40 <desrt> is it pserver sort of thing or via ssh?
Sep 01 14:34:53 <walters>       and for read-only access, WebDAV works well
Sep 01 14:35:06 <walters>       that's what runs
Sep 01 14:35:20 <desrt> interesting.
Sep 01 14:35:38 <desrt> i have an rsa1 key
Sep 01 14:35:47 <desrt> i'm not sure if that mixes well with sftp
Sep 01 14:36:16 <walters>       desrt: after you get tla installed
Sep 01 14:36:20 <walters>       desrt: here's what you do:
Sep 01 14:36:21 <desrt> it's done
Sep 01 14:36:22 <walters>       tla register-archive address@hidden
Sep 01 14:36:36 <walters>       tla get address@hidden/rhythmbox--mainline--1.0
Sep 01 14:36:36 <desrt> k.
Sep 01 14:36:43 <desrt> downloading
Sep 01 14:36:48 <walters>       that'll get you a copy of the tree
Sep 01 14:36:49 <desrt> * from import revision: 
Sep 01 14:36:53 <walters>       but you likely want to make your own branch
Sep 01 14:37:04 <walters>       so that you can hack on it, commit stuff there
Sep 01 14:37:17 <walters>
Sep 01 14:37:25 <walters>       the tutorial is a bit outdated in some places 
Sep 01 14:37:28 <desrt> :)
Sep 01 14:37:30 <walters>       but you can get the idea
Sep 01 14:37:40 <desrt> hmm
Sep 01 14:37:52 <desrt> this is good.
Sep 01 14:38:00 <desrt> because now i don't have to have 8 copies of the tree
Sep 01 14:38:15 <desrt> a clean copy, a work copy, a build copy, a patched 
copy, etc
Sep 01 14:41:31 <walters>       arch seems a little bit strange and weird at 
first...but that's in large part because it's better in a *fundamental* way 
than other systems like cvs and subversion
Sep 01 14:41:49 <desrt> i sort of like cvs
Sep 01 14:41:56 <desrt> but i'll be the first to admit that it's only because 
it's what i knew first
Sep 01 14:42:00 <walters>       cvs does what it was intended to do quite well
Sep 01 14:42:11 <walters>       but after you learn about what you can do with won't want to go back :)
Sep 01 14:47:28 <desrt> ahh elementary branches
Sep 01 14:47:29 <desrt> here we go
Sep 01 14:50:30 <desrt> i want to make my branch on your server, right?
Sep 01 14:50:38 <walters>       nope
Sep 01 14:50:44 <walters>       you make a branch in your own archive
Sep 01 14:50:51 <desrt> on my local filesystem
Sep 01 14:50:53 <walters>       right
Sep 01 14:51:04 <desrt> how do you import my changes, then?
Sep 01 14:51:14 <walters>       you need to publish your changes somewhere
Sep 01 14:52:54 <walters>       desrt: like on a web site or on an 
ftp-accessible server
Sep 01 14:53:15 <desrt> i'd publish my {archive} there?
Sep 01 14:53:20 <walters>       desrt: exactly
Sep 01 14:53:31 <walters>       desrt: actually normally though, what'd you'd 
be publishing is a mirror of your archive
Sep 01 14:53:36 <desrt> i have ssh access to my webserver
Sep 01 14:53:40 <walters>       like i have an archive ~/arch-rhythmbox
Sep 01 14:53:45 <walters>       on my laptop
Sep 01 14:53:50 <walters>       which is where i commit everything
Sep 01 14:54:02 <desrt> which means you can work even when not on the net
Sep 01 14:54:05 <walters>       exactly
Sep 01 14:54:10 <desrt> which is good for a laptop :)
Sep 01 14:54:16 <walters>       and then occasionally i run "tla archive-mirror 
Sep 01 14:54:25 <walters>       and that pushes all the csets to
Sep 01 14:54:28 <desrt> what's with the --2003 everywhere?
Sep 01 14:54:32 <walters>       well
Sep 01 14:54:41 <walters>       the thing is that if you use arch correctly, 
you'll create a *lot* of branches
Sep 01 14:54:47 <walters>       in cvs branching is incredibly painful
Sep 01 14:54:53 <walters>       so people do it rarely, and only for major 
Sep 01 14:55:03 <desrt> like whole new releases
Sep 01 14:55:12 <walters>       but in arch, it's possible and even good to 
create a branch for every nontrivial feature you're adding
Sep 01 14:55:23 <walters>       so you can work on them independently, and then 
merge them back into the mainline as one clean changeset
Sep 01 14:55:28 <desrt> so i'll have a "small display" branch
Sep 01 14:55:31 <walters>       right!
Sep 01 14:55:33 <walters>       exactly
Sep 01 14:55:58 <desrt> but i store it locally
Sep 01 14:56:02 <walters>       yep
Sep 01 14:56:11 <walters>       arch works transparently across archive 
Sep 01 14:56:24 <walters>       since essentially, there is a global namespace
Sep 01 14:56:27 <desrt> this is interesting and confusing
Sep 01 14:56:52 <walters>       desrt: it is confusing at first, but again 
after you grasp the power, you won't want to go back to cvs :)
Sep 01 14:56:52 <desrt> so back to --2003
Sep 01 14:57:12 <walters>       desrt: ok, the --2003 is there because you 
create so many branches, you don't want your display to be cluttered with last 
year's branches
Sep 01 14:57:15 <desrt> you do it because there are too many branches 
everywhere and that lets you keep track of the year of the branch?
Sep 01 14:57:25 <walters>       well, it's just for cosmetic purposes
Sep 01 14:57:31 <walters>       like when you're browsing an archive
Sep 01 14:57:31 <desrt> hmm
Sep 01 14:57:38 <walters>       some people don't use a date
Sep 01 14:57:39 <desrt> interesting
Sep 01 14:57:42 <walters>       they just do like address@hidden
Sep 01 14:57:51 <desrt> i would have thought once a feature was accepted into 
the main tree the branch collapsed
Sep 01 14:58:00 <desrt> i suspect i'm still thinking in the wrong mindset
Sep 01 14:59:26 <desrt>  anyway
Sep 01 14:59:37 <desrt> i probably want to break in my tree before i start 
Sep 01 14:59:49 <desrt> so i'm going to make a candice branch :)
Sep 01 14:59:53 <walters>       cool :)
Sep 01 15:00:05 <desrt> i totally have no idea what i'm doing :)
Sep 01 15:00:15 <walters>       desrt: i can help you get started...where do 
you want to keep your archive?
Sep 01 15:00:23 <walters>       desrt: like where do you keep your source code?
Sep 01 15:00:31 <desrt> walters; well.. 2 places
Sep 01 15:00:39 <desrt> peloton:~/code/[project]
Sep 01 15:00:44 <desrt> and copacetic:/home/cvs/[project]
Sep 01 15:00:50 <desrt> copacetic runs sshd and apache
Sep 01 15:00:53 <desrt> peloton runs nothing
Sep 01 15:01:01 <desrt> (peloton is where i will be doing the actual coding - 
my workstation)
Sep 01 15:01:12 <walters>       desrt: ok, cool.  do this:  tla make-archive 
address@hidden ~/code/rhythmbox
Sep 01 15:01:26 <walters>       desrt: tla archive-setup 
Sep 01 15:01:26 <desrt> walters; then it's not published?
Sep 01 15:01:30 <walters>       desrt: wait
Sep 01 15:01:46 <walters>       desrt: tla tag 
address@hidden/rhythmbox--mainline--1.0 address@hidden/rhythmbox--mainline--1.0
Sep 01 15:01:58 <walters>       desrt: then, to check out your new tree: tla 
get address@hidden/rhythmbox--mainline--1.0
Sep 01 15:02:19 <desrt> now.  what if i want to publish my changes?
Sep 01 15:02:27 <walters>       desrt: now you create a mirror of your archive
Sep 01 15:02:37 <desrt> okay.  those 3 commands first.
Sep 01 15:03:07 <walters>       desrt: tla make-archive --mirror 
address@hidden/rhythmbox--mainline--1.0 s
Sep 01 15:03:17 <walters>       G-LiTe: --print-playing
Sep 01 15:03:23 <desrt> let me write these down so i don't lose them
Sep 01 15:04:07 <desrt> maybe i want to do ~/code/{arch}/rhythmbox?
Sep 01 15:04:12 <walters>       desrt: sure
Sep 01 15:04:20 <walters>       desrt: i don't use the { } myself though :)
Sep 01 15:04:41 <desrt> arch: no arch user id set
Sep 01 15:05:14 <walters>       desrt: oh, tla my-id 'My Name <address@hidden>'
Sep 01 15:05:43 <walters>       carlos: the thing is, your software doesn't 
have these functionalities, so you're used to working without them
Sep 01 15:06:49 <desrt> okay
Sep 01 15:06:51 <desrt> checking out :)
Sep 01 15:07:17 <desrt> now how do i define a small display branch within my 
Sep 01 15:07:44 <walters>       desrt: tla archive-setup 
Sep 01 15:08:03 <walters>       desrt: tla tag 
Sep 01 15:08:14 <desrt> ahh
Sep 01 15:08:23 <desrt> so now smalldisplay is a branch of my personal branch
Sep 01 15:08:23 <walters>       desrt: btw, it helps a lot if you have zsh 
completion :)
Sep 01 15:08:26 <walters>       desrt: yep
Sep 01 15:08:38 <walters>       desrt: damn, you are picking this all up wayy 
faster than i did :)
Sep 01 15:08:40 <desrt> i have bash completion but not configured for tla
Sep 01 15:08:49 <walters>       ok there's a bash completion package out there 
Sep 01 15:09:00 <desrt> and then i checkout my small-display--1.0 branch
Sep 01 15:09:02 <desrt> and work on that
Sep 01 15:09:04 <walters>       desrt: yep
Sep 01 15:09:08 <desrt> makes a lot of sense
Sep 01 15:09:11 <walters>       desrt: and then, the magic command you want to 
merge is "star-merge"
Sep 01 15:09:19 <walters>       desrt: so here's what you do
Sep 01 15:09:26 <walters>       desrt: you hack on the small display branch
Sep 01 15:09:42 <walters>       desrt: also at the same time, you're working on 
other misc. fixes to the main tree, which you do in --mainline--
Sep 01 15:09:51 <walters>       desrt: you want to merge the mainline changes 
into small-display
Sep 01 15:09:51 <desrt>  this is pretty rad
Sep 01 15:10:07 <walters>       desrt: tla star-merge 
Sep 01 15:10:15 <walters>       desrt: tla commit -L 'merge from mainline'
Sep 01 15:10:31 <walters>       desrt: you will do this several times probably, 
until you finish with small-display
Sep 01 15:10:39 <walters>       desrt: then, you merge small-display back into 
Sep 01 15:10:53 <desrt> okay
Sep 01 15:10:54 <walters>       desrt: tla star-merge 
Sep 01 15:10:59 <walters>       and it all Just Works
Sep 01 15:11:04 <walters>       you don't have problems due to repeated merging
Sep 01 15:11:13 <desrt> that makes sense too
Sep 01 15:11:14 <desrt> useful
Sep 01 15:12:04 <desrt> look at that.  another directory!
Sep 01 15:13:23 <walters>       desrt: btw, you can do 'tla my-default-archive 
Sep 01 15:14:04 <desrt> now.. if i merge the my mainline branch changes into 
small display
Sep 01 15:14:12 <desrt> will it also pull yours in (because my mainline is a 
branch of yours)
Sep 01 15:14:19 <walters>       no
Sep 01 15:14:21 <desrt> or do i have to pull your changes into my mainline 
Sep 01 15:14:23 <walters>       right
Sep 01 15:14:26 <desrt> k
Sep 01 15:14:42 <desrt> i don't understand this -L thing
Sep 01 15:14:48 <walters>       desrt: while you're working, you'll probably 
want your mainline to track my repository
Sep 01 15:14:48 <desrt> i need to do both these commands, right?
Sep 01 15:14:54 <walters>       desrt: the -L is the log message
Sep 01 15:14:58 <walters>       woah
Sep 01 15:14:59 <desrt> ooh
Sep 01 15:15:02 <desrt> interesting
Sep 01 15:15:22 <walters>       desrt: like this: tla star-merge 
address@hidden/rhythmbox--mainline--1.0 rhythmbox--mainline--1.0
Sep 01 15:16:40 <desrt> walters; oh.  so when i do the merge it only does it on 
my local working directory
Sep 01 15:16:44 <walters>       desrt: yep
Sep 01 15:16:47 <desrt> and tla commit -L pushes it up to my server (or arch 
Sep 01 15:16:52 <walters>       desrt: you've created a full branch
Sep 01 15:16:58 <walters>       desrt: no
Sep 01 15:17:07 <walters>       desrt: the star-merge only makes the may have conflicts you have to resolve
Sep 01 15:17:22 <walters>       desrt: after you commit, then it's pushed as a 
new cset into your local repository
Sep 01 15:17:40 <walters>       desrt: then later, you can push those changes 
to your mirror like this: tla archive-mirror address@hidden
Sep 01 15:18:04 <desrt> no.  i don't mean the mirror
Sep 01 15:18:14 <desrt> i mean that the star-merge only effects my local 
working space
Sep 01 15:18:17 <walters>       right
Sep 01 15:18:21 <desrt> and the commit -L actually puts it in 
Sep 01 15:18:25 <walters>       desrt: yep
Sep 01 15:18:30 <desrt> okay.  that makes sense
Sep 01 15:18:46 <desrt> so as an extension of that for normal hacking i'll use 
Sep 01 15:19:46 <desrt> anyway
Sep 01 15:19:51 <desrt> i'm going to start writing code now :)
Sep 01 15:19:52 <walters>       desrt: so you've got the overall idea down it 
seems...but i would start maybe just playing with it for some small project of 
yours and get used to just making logs and commiting stuff until you jump 
headfirst into branches and distributed development :)
Sep 01 15:20:08 <desrt> hmm
Sep 01 15:20:12 <walters>       but it's up to you :)
Sep 01 15:20:15 <desrt> well
Sep 01 15:20:17 <desrt> a couple of questions
Sep 01 15:20:22 <desrt> say i make my small display changes
Sep 01 15:20:33 <desrt> but i also make some stupid changes in my mainline
Sep 01 15:20:41 <desrt> can you take my small display tree without taking my 
entire mainline?
Sep 01 15:21:00 <walters>       desrt: yes...but it would be better if you 
fixed your mainline
Sep 01 15:21:13 <desrt> or better still: didn't break it in the first place
Sep 01 15:26:10 <desrt> you expect me to make the changes? :)
Sep 01 15:26:21 <walters>       no, i'm updating NEWS
Sep 01 15:26:27 <walters>       and then you can pull the changes into your 
Sep 01 15:26:32 <desrt> oh.  cool.
Sep 01 15:26:41 <desrt> which i do by updating my mainline to yours
Sep 01 15:26:47 <desrt> then updating my small display branch to it
Sep 01 15:26:50 <walters>       yep
Sep 01 15:26:56 <walters>       well you don't have to update small-display 
Sep 01 15:27:07 <desrt> i'm going to make some small changes to small-display
Sep 01 15:27:14 <desrt> just to see that they merge in properly
Sep 01 15:27:24 <walters>       not having to update all the branches whenever 
something changes is kind of the goal :)
Sep 01 15:27:33 <desrt> oh.  okay :)
Sep 01 15:27:42 <desrt> is there any way i can get my mainline to just follow 
Sep 01 15:27:51 <desrt> like, automatically...
Sep 01 15:27:53 <walters>       sure, you can not make a mainline branch at all 
Sep 01 15:28:05 <walters>       and instead just tag small-display off my 
Sep 01 15:28:06 <desrt> ie: branch smalldisplay directly off of yours
Sep 01 15:28:09 <walters>       exactly
Sep 01 15:28:10 <desrt> ya
Sep 01 15:28:25 <desrt> so no way to have a transparent local changeset, though
Sep 01 15:28:54 <walters>       so here's what i did:
Sep 01 15:28:54 <desrt> actually
Sep 01 15:28:56 <walters>       address@hidden> tla commit                      
Sep 01 15:28:56 <walters>       No logs found, creating one automatically.
Sep 01 15:28:56 <walters>       (Use "tla make-log" to create a log file.)
Sep 01 15:28:56 <walters>       M  {arch}/=tagging-method
Sep 01 15:28:56 <walters>       M  NEWS
Sep 01 15:28:56 <walters>       * update pristine tree 
(address@hidden/rhythmbox--mainline--1.0--patch-7 => 
Sep 01 15:28:56 <walters>       * commited 
Sep 01 15:28:56 <walters>       address@hidden> tla archive-mirror 
address@hidden           /src/arch/address@hidden/rhythmbox--mainline
Sep 01 15:28:56 <walters>       * mirroring address@hidden to address@hidden 
with limit (null)
Sep 01 15:28:56 <walters>       ** adding revision 
Sep 01 15:28:56 <walters>       address@hidden> 
Sep 01 15:28:58 <desrt> that makes a lot of sense
Sep 01 15:29:12 <desrt> because you can't always expect that tla will be able 
to automatically resolve conflicts
Sep 01 15:29:19 <walters>       desrt: right
Sep 01 15:29:26 joose jorn Sep 01 15:29:38 <walters>    jorn: hadess has been 
taking care of the xine stuff
Sep 01 15:30:02 <desrt> so i now star-merge address@hidden/rhythmbox--mainline 
address@hidden/rhythmbox--mainline--1.0 ?
Sep 01 15:31:25 <walters>       desrt: --1.0 yeah
Sep 01 15:31:38 <desrt> ie: add --1.0 to yours?
Sep 01 15:31:41 <walters>       desrt: right
Sep 01 15:31:46 <desrt> problem.
Sep 01 15:31:47 <desrt> tla: unrecognized command (star-merge)
Sep 01 15:31:56 <walters>       desrt: ahhh.  you have 1.0.
Sep 01 15:32:03 <walters>       desrt: righty need 1.1 to have 
Sep 01 15:32:11 <desrt> crap :P
Sep 01 15:32:34 <desrt> no ebuild.  hrmph.
Sep 01 15:32:48 <desrt> what's the latest version?
Sep 01 15:32:59 <walters>       1.1pre5 looks like
Sep 01 15:33:10 <walters>       i'm actually using a .deb of a snapshot from 
the tla tla
Sep 01 15:33:22 <desrt> heh
Sep 01 15:33:48 <desrt> peloton:/usr/portage/dev-util/tla# cp tla-1.0.6.ebuild  
Sep 01 15:33:49 <desrt> :)
Sep 01 15:35:11 <desrt> the sad part is that this will probably work :)
Sep 01 15:35:39 <walters>       if it just wgets or whatever based on the 
filename, then probably heah
Sep 01 15:35:43 <walters>       s/heah/yeah/
Sep 01 15:35:51 <desrt> ya.  it does
Sep 01 15:36:02 <desrt> and assuming the configure/make/make install hasn't 
change much it'll still work
Sep 01 15:48:14 <walters>       desrt: cool, you got the changes?
Sep 01 15:48:20 <desrt> well, i cheated
Sep 01 15:48:34 <desrt> i nuked my config and started over
Sep 01 15:48:44 <walters>       ah heh
Sep 01 15:48:46 <desrt> star-merge didn't like my 1.0 arch directories
Sep 01 15:48:58 <walters>       huh
Sep 01 15:49:03 <desrt> i think
Sep 01 15:49:03 <walters>       that would be a bug i think
Sep 01 15:49:07 <desrt> lemme try a star-merge again
Sep 01 15:49:15 <walters>       well now you'll have nothing to merge
Sep 01 15:49:18 <desrt> hmm
Sep 01 15:49:19 <desrt> still broken
Sep 01 15:49:24 <desrt> peloton:~/code/rhythmbox$ tla star-merge 
address@hidden/rhythmbox--mainline--1.0 rhythmbox--mainline--1.0
Sep 01 15:49:27 <desrt> Error during call to `vu_chdir' for 
rhythmbox--mainline--1.0 (No such file or directory)
Sep 01 15:49:31 <desrt> PANIC: I/O error
Sep 01 15:49:49 <walters>       desrt: hmm...did you blow away your local 
Sep 01 15:49:50 <desrt> the directory i have, btw, is called 
Sep 01 15:50:00 <desrt> i blew everything away... but it's all back now
Sep 01 15:50:06 <walters>       desrt: oh, don't pass any args to star-merge 
Sep 01 15:50:08 <walters>       desrt: er
Sep 01 15:50:10 <desrt> and i got that same error before i killed it all
Sep 01 15:50:11 <walters>       desrt: not the second arg
Sep 01 15:50:16 <desrt> oh
Sep 01 15:50:16 <walters>       desrt: that was my bad
Sep 01 15:50:18 <desrt> i do it from inside the dir?
Sep 01 15:50:20 <walters>       desrt: right
Sep 01 15:50:23 <desrt> cool
Sep 01 15:50:41 <desrt> hmm
Sep 01 15:50:45 <desrt> it wants the 2 args
Sep 01 15:50:50 <walters>       hmmm
Sep 01 15:50:57 <desrt> usage: tla star-merge [options] FROM TREE [VERSION]
Sep 01 15:50:57 <desrt> try star-merge --help
Sep 01 15:50:59 <walters>       desrt: this might be a recent feature in the 
tla tla
Sep 01 15:51:11 <walters>       merge mutually merged branches
Sep 01 15:51:11 <walters>       usage: tla star-merge [options] FROM
Sep 01 15:51:17 <desrt> . worked
Sep 01 15:51:29 <walters>       desrt: this one guy has been working on lots of 
UI improvements on the commandline, looks like that is one of them
Sep 01 15:51:30 <desrt> i hope
Sep 01 15:51:54 <walters>       desrt: tla is still rough around the edges in a 
lot of places...but the thing is, they're all problems that aren't too hard to 
fix...nothing fundamental
Sep 01 15:52:21 <walters>       Larry McVoy used to joke about bitkeeper being 
threatened by arch
Sep 01 15:52:27 <desrt> good design, quick implimentation > poor design, 
will-never-be-good implimentation
Sep 01 15:52:31 <walters>       way back when it was a collection of hackish 
shell scripts, and was incredibly slow
Sep 01 15:52:41 <walters>       now it's been rewritten in C, and is way faster
Sep 01 15:52:50 <walters>       i don't think Larry's making any more jokes :)
Sep 01 15:52:55 <desrt> heh
Sep 01 15:53:01 <desrt> want to make some sort of a trivial change?
Sep 01 15:53:17 <walters>       hmm
Sep 01 15:53:18 <walters>       let me think
Sep 01 15:53:30 <walters>       desrt: what was that line somewhere you said 
was useless now?
Sep 01 15:53:37 <desrt> rb-shell.c
Sep 01 15:53:43 <desrt> search for CMD
Sep 01 15:53:47 <desrt> it's the "show window" one
Sep 01 15:54:23 <walters>       * commited 
Sep 01 15:54:30 <desrt> okay.
Sep 01 15:54:36 <desrt> star-mergeing
Sep 01 15:54:43 <desrt> why does it go through all the patches twice?
Sep 01 15:54:51 <walters>       desrt: it's building trees to compare with
Sep 01 15:54:59 <desrt> neat
Sep 01 15:55:22 <desrt> okay.  it's gone
Sep 01 15:55:29 <desrt> now i want to tla commit the changes to my own repo
Sep 01 15:55:38 <walters>       desrt: tla commit -L 'merge with walters'
Sep 01 15:55:41 <walters>       desrt: but
Sep 01 15:55:43 <walters>       desrt: before you do that
Sep 01 15:55:45 <walters>       desrt: do 'tla what-changed'
Sep 01 15:55:47 <desrt> crap
Sep 01 15:55:52 <desrt> too late :P
Sep 01 15:56:07 <desrt> M  ./shell/rb-shell.c
Sep 01 15:56:13 <desrt> that was in the commit output...
Sep 01 15:56:16 <walters>       yeah
Sep 01 15:56:30 <walters>       usually it's good to look at what-changed 
before committing
Sep 01 15:56:36 <walters>       just as a sanity check
Sep 01 15:56:42 <desrt> that's a good policy
Sep 01 15:56:49 <desrt> "added file hax0r_backdoor.c"
Sep 01 15:57:00 <desrt> *scratches his head for a moment and commits anyway*
Sep 01 15:57:24 <walters>       heh
Sep 01 15:57:56 <desrt> okay
Sep 01 15:58:01 <desrt> i'm gonna get to work now :)
Sep 01 15:58:32 <desrt> thanks for the arch tutorial, btw :)
Sep 01 15:58:43 <walters>       desrt: sure.  i learned some things too 
actually :)
Sep 01 15:58:52 <desrt> you did a much better job than the document (also rough 
around the edges)
Sep 01 15:58:59 <walters>       a lot of times explaining things help you learn 
Sep 01 15:59:05 <desrt> ya.  me too
Sep 01 15:59:17 <desrt> saying things aloud can help get them sorted in your 
own head
Sep 01 16:00:12 <desrt> anyway.. i asked a few times up there ^^
Sep 01 16:01:04 <desrt> i can safely generate build cruft in these directories, 
Sep 01 16:01:09 <walters>       desrt: yeah
Sep 01 16:01:22 <desrt> this is very cool :)
Sep 01 16:01:33 <desrt> how do i add/delete files?
Sep 01 16:01:39 <walters>       desrt: well
Sep 01 16:01:48 <walters>       desrt: ok, now you need to know about arch's 
different "tagging methods"
Sep 01 16:02:03 <walters>       desrt: there is "explicit" which is like cvs - 
you need to tell cvs any time you add/remove a file
Sep 01 16:02:08 <desrt> noooo not more!
Sep 01 16:02:10 <desrt> heh
Sep 01 16:02:10 <walters>       desrt: however rb uses "tagline"
Sep 01 16:02:18 <walters>       where tags are included in most files
Sep 01 16:02:27 <desrt> like $Id$ tags
Sep 01 16:02:27 <walters>       like in all the src .c files you should see 
arch-tag: foo bar
Sep 01 16:02:40 <walters>       desrt: so if you want to rename a file that 
uses that...just mv foo.c bar.c
Sep 01 16:02:44 <walters>       desrt: tla automatically picks it up
Sep 01 16:02:52 <desrt> walters; that's rad
Sep 01 16:02:54 <walters>       desrt: however we can't embed arch-tag in all 
Sep 01 16:03:02 <walters>       desrt: so some (like the .pngs) are managed 
Sep 01 16:03:04 <desrt> like files that don't take comments
Sep 01 16:03:08 <walters>       desrt: so you have to use 'tla move' for that
Sep 01 16:03:09 <walters>       desrt: yep
Sep 01 16:03:17 <desrt> what about files that are used to auto-generate other 
Sep 01 16:03:35 <desrt> obviously you can't have the .in's tagline showing up 
in Makefile or something
Sep 01 16:03:36 <walters>       desrt: -> .xml ?
Sep 01 16:03:39 <desrt> ya
Sep 01 16:03:48 <walters>       desrt: right...note that all the's 
use ## arch-tag:
Sep 01 16:03:56 <walters>       desrt: the ## tells automake not to put it in 
the .in
Sep 01 16:03:58 <desrt> and there are no
Sep 01 16:04:16 <walters>       desrt: if duplicate tags happen, tla will bomb 
Sep 01 16:04:18 <desrt> so is on explicit, then?
Sep 01 16:04:21 <walters>       desrt: you can use 'tla tree-lint' to check
Sep 01 16:04:24 <walters>       desrt: unfortunately yes :/
Sep 01 16:04:31 <desrt> ya well.. what can ya do?
Sep 01 16:04:36 <walters>       desrt: i tried putting it in the, but 
then i got exactly the problem you describe
Sep 01 16:05:01 <walters>       the hack i used in the is even 
worse :)
Sep 01 16:05:01 <desrt> how do i add a tagline?
Sep 01 16:05:08 <desrt> and/or how do i explicit?
Sep 01 16:05:16 <walters>       desrt: tla add/tla remove for explicit
Sep 01 16:05:23 <desrt> see also: cvs
Sep 01 16:05:26 <walters>       desrt: as for tagline, well you just put it in 
the file in the first 1k or the last 1k
Sep 01 16:05:58 <desrt> you know
Sep 01 16:06:02 <desrt> you could tagline PNGs
Sep 01 16:06:02 <walters>       tgnb: because copyright law sucks :)
Sep 01 16:06:07 <walters>       desrt: yeah...i heard about that
Sep 01 16:06:10 <desrt> they have a comment field
Sep 01 16:06:18 <walters>       desrt: i didn't want to mess with it really
Sep 01 16:06:23 <desrt> i don't blame you
Sep 01 16:06:30 <desrt> taglines in binaries is probably a bad idea
Sep 01 16:06:39 <desrt> espescially if arch starts to think it can change the 
Sep 01 16:07:13 <walters>       arch should never change a tagline
Sep 01 16:07:23 <desrt> what does it do for a rename, then?
Sep 01 16:07:28 <desrt> keeps the old one?
Sep 01 16:07:28 <walters>       the tagline stays the same
Sep 01 16:07:35 <walters>       that's how it recognizes it as the "same" file
Sep 01 16:07:52 <desrt>  *  arch-tag: Implementation of main Rhythmbox shell
Sep 01 16:07:55 <desrt> oh.  interesting
Sep 01 16:08:13 <desrt> i thought it was in a specific format and modifyable by 
arch like $Id$
Sep 01 16:08:22 <walters>       nope
Sep 01 16:08:26 <walters>       it's pretty much freeform
Sep 01 16:08:32 <walters>       a lot of people use uuids for their tags
Sep 01 16:08:33 <desrt> hm
Sep 01 16:08:38 <walters>       so people aren't inclined to change them
Sep 01 16:08:56 <walters>       if you change the tagline, arch will think it's 
a removal followed by an add
Sep 01 16:09:24 <desrt> and you lose your history
Sep 01 16:09:43 <desrt> does arch have an audit sort of output?
Sep 01 16:09:47 <walters>       well...history isn't associated with a 
particular file in arch
Sep 01 16:09:50 <walters>       it uses changesets
Sep 01 16:09:52 <walters>       but
Sep 01 16:10:12 <walters>       if you tried to merge in someone else's tree, 
and they'd modified the original file, arch would tag it as a conflict
Sep 01 16:10:18 <walters>       because it thinks of them as different files now
Sep 01 16:10:20 <walters>       make sense?
Sep 01 16:10:28 <desrt> ohh interesting
Sep 01 16:10:37 <walters>       desrt: there isn't a nice way atm to get file would be cool if there was
Sep 01 16:10:37 <desrt> so if we're on the same tree
Sep 01 16:10:42 <desrt> and i do "mv a b"
Sep 01 16:10:48 <desrt> and you do "echo hello >> a"
Sep 01 16:10:51 <desrt> and we merge one way or another
Sep 01 16:10:59 <desrt> we'll now have a file "b" with a last line of 'hello'
Sep 01 16:11:03 <walters>       yes!  very cool huh :)
Sep 01 16:11:08 <desrt> ya.  that's awesome :)
Sep 01 16:11:28 <walters>       by the now know more or less 
everything i know about arch :)

reply via email to

[Prev in Thread] Current Thread [Next in Thread]