• ·Î±×ÀÎ ÇÔ ÇØº¸²ô³ª?

  • Sarangnamu.net June 17, 2003
    Home Login Study Open Project Gallery Free board Google Code
    CVS (Concurrent Versions System) »ç¿ëÇϱâ


    ///////////////////////////////////////////////////////////////////////////
    //
    //
    // ÀúÀå¼Ò ¹× µð·ºÅ丮 »ý¼º ¹× ÃʱâÈ­
    // ´Ù¿î·Îµå : http://www.cvshome.org
    //
    //
    ///////////////////////////////////////////////////////////////////////////

    mkdir /home/cvs
    cvs =d /home/cvs init
    adduser cvs
    chown root.cvs /home/cvs -R
    chmod 770 /home/cvs -R


    // À¯Àú ÆÐ½º¿öµå ¼³Á¤
    htpasswd -nb [ID] [PASS]

    // cvs server start
    /etc/xinetd.d/cvspserver

    /////////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs¼­¹ö¸¦ ½ÇÇà ½Ã۱â À§Çؼ­ ¾Æ·¡ ÆÄÀÏÀ» »ý¼º
    //
    //
    /////////////////////////////////////////////////////////////////////////////

    // ÆÄÀϸí
    /etc/xinetd.d/cvspserver

    // ³»¿ë
    service cvspserver
    {
        disable        = no
        flags            = REUSE
        socket_type    = stream
        wait            = no
        user            = cvs
        server        = /usr/bin/cvs
        server_args    = --allow-root=/home/cvs pserver
    }

    // ÆÄÀÏ »ý¼ºÈÄ ÁøÇà ÀÛ¾÷
    service xinetd restart
    netstat -an grep 2401

    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ·Î±×ÀÎ Çϱâ
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs -d:pserver:kurome@localhost:2401/home/cvs login

    :[Á¢¼Ó¹æ¹ý]:[cvs»ç¿ëÀÚID]@[ÁÖ¼Ò:Æ÷Æ®/°æ·Î]


    ¸Ç³¯ Çϱ⠱ÍÂú¾Æ¼­¸® ´Ù¸¥ ¹æ¹ýÀÌ Á¸ÀçÇϴµ¥

    ~/.bash_profile

    ¿¡´Ù°¡ ¾Æ·¡ ³»¿ëÀ» Ãß°¡ÇÑ´Ù.

    export CVSROOT=:pserver:kurome@localhost:/home/cvs

    Ãß°¡ÇѵÚ

    source ~/.bash_profile

    À» ¸í·ÉÇÑ´Ù.
    ¿©±â¼­ pserver ´ë½Å ext¸¦ »ç¿ëÇÏ°Ô µÇ¸é ½Ã½ºÅÛ °èÁ¤À» ÀÌ¿ëÇÑ rsh ³ª ssh·Î Á¢¼Ó ÇÏ´Â °ÍÀ» ÀǹÌÇÑ´Ù.


    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ÆÄÀÏ µî·ÏÇϱâ
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs import -m "diary project start " diary project start



    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ÇÁ·ÎÁ§Æ® ÆÄÀÏ ¹Þ¾Æ ¿À±â
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs checkout diary
    ³ª
    cvs co diary

    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ¼öÁ¤ÇÑ ³»¿ëÀ» ÀúÀå¼Ò µð·ºÅ丮¿¡ ¹Ý¿µ
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs commit -m "main.c file comment append" main.c



    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ¼öÁ¤ÇÑ ÆÄÀÏÀÌ ¸¹Àºµ¥ ÀÏÀÏÈ÷ ¼öÁ¤Çϱ⠰ï¶õÇÒ ¶§ ÀÌ¿ë
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs ci


    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ÇöÀç ÀÛ¾÷ µð·ºÅ丮¿¡ ÃֽŠ¼Ò½º ¹Ý¿µÇϱâ
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs update

    ³ª

    cvs up

    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ÆÄÀϰú µð·ºÅ丮 Ãß°¡ ¹× »èÁ¦
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs add newfile.c         // ÆÄÀÏ Ãß°¡

    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs µð·ºÅ丮 Æ®¸®¸¦ Ãß°¡ÇÏ´Â ½ºÅ©¸³Æ® ÆÄÀÏ
    //
    //
    ////////////////////////////////////////////////////////////////////////

    #!/usr/bin/python
    # vi: set ts=4 sts=4 sts=4 sw=4 : #

    import os
    import sys
    import getopt
    import glob

    def read_dir(args, dirname, filenames) :
        if not dirname.endswith("CVS") :
            if dirname.endswith("/") :
                dirname = dirname[ 0:dirname.rindex("/")]
            os.system("cvs add " + dirname)
            
            for f in filenames :
                if os.path.isfile(dirname + "/" + f) :
                os.system("cvs add " + dirname + "/" + f)
                
    ################ main start ###############

    if len(sys.argv) > 1:
        options, args = getopt.getopt(sys.argv[1:], "t:")
        
        for op, var in options:
            if op == "-t" :
                os.path.walk(var, read_dir, [] )

    os.system("cvs ci -m \"append directories\"")

    À§ ½ºÅ©¸³Æ®¸¦ cvsadd.py ·Î ÀÛ¼ºÇϰí chmod 755 /usr/local/cvsadd.py ¸í·ÉÀ¸·Î ½ÇÇà ±ÇÇÑ
    À» ÁØ´Ù. ±×¸®°í newdir µð·ºÅ丮ÀÇ »óÀ§ µð·ºÅ丮¿¡¼­ ¾Æ·¡¿Í °°ÀÌ ¸í·ÉÀ» ³»¸®¸é newdir µð·º
    Å丮 ÀÌÇÏ ¸ðµç ÆÄÀϰú µð·ºÅ丮°¡ CVS ¼­¹ö¿¡ Ãß°¡µÈ´Ù.

    cvsadd.py -t newdir

    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs µð·ºÅ丮ÀÇ »èÁ¦
    //
    //
    ////////////////////////////////////////////////////////////////////////

    rm -rf newfile.c
    cvs remove newfile.c
    cvs ci -m "newfile.c ÆÄÀÏ Á¦°Å"



    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ÇöÀç ¹öÀü È®ÀÎ
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs status newfile.c



    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ÀÌÀü ¹öÀüÀ¸·Î º¹±Í
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs up -r 1.5 -p newfile.c > newfile.c

    ÀÌ°Ç ÀϽÃÀûÀº º¹±ÍÀÌ°í ¿ÏÀüÈ÷ º¹±Í Çϱâ À§Çؼ­´Â
    cvs add newfile.c ¸í·ÉÀ» »ç¿ëÇÏ¿© ÆÄÀÏÀ» Ãß°¡ ÇØ¾ß ÇÑ´Ù.

    cvs up -j 1.6 -j 1.5 newfile.c

    ±âŸ > À̹ÌÁö¿Í °°Àº ¹ÙÀ̳ʸ® ÆÄÀÏÀÇ °æ¿ì´Â -kb ¿É¼ÇÀ» ÁÖ¾î ¹ÙÀ̳ʸ®
    ÆÄÀÏ À̶ó´Â °ÍÀ» ¾Ë·Á¾ß ÇÑ´Ù.

    cvs add -kb image.jpg

    ±âŸ > °£È¤ ·Ñ¹é(Rollback)À» ÇÏ°í ·Ñ¹éÇÑ ÆÄÀÏÀ» ¼öÁ¤ÇÑ ÈÄ commitÀ» ÇÒ¶§
    sticky tag `1.2`¿Í °°Àº ¸Þ½ÃÁö°¡ Ãâ·Â µÇ¸é¼­ commit ÀÌ µÇÁö ¾Ê´Â °æ¿ì°¡ ¹ß
    »ýÇÒ °æ¿ì°¡ Àִµ¥ ÀÌ´Â ÆÄÀÏ¿¡ sticky tag°¡ À־ ±×·¸´Ù. sticky tag´Â ÀÌ
    Àü ¹öÀüÀ¸·Î µÇµ¹¸°´Ù°Å³ª ÇÒ ¶§ ÀÚµ¿À¸·Î µé¾î°¡°Ô µÇ´Âµ¥ sticky tag°¡ µé¾î
    °¡´Â ÀÌÀ¯´Â main.cÆÄÀÏÀ» 1.2·Î ¹Ù²Ù°í commitÀÌ °¡´ÉÇÏ´Ù¸é ÇöÀç ÀúÀå¼Ò
    µð·ºÅ丮¿¡ ÀÖ´Â main.c ÆÄÀÏÀº ÈξÀ ÀÌÀü ¹öÀüÀÎ 1.2 ¹öÀüÀ¸·Î ¹Ù²î±â ¶§¹®
    ÀÌ´Ù.

    ÀÌ·± ÀÏÀ» ¹Ì¿¬¿¡ ¹æÁöÇϰíÀÚ CVS´Â cvs up -r 1.2 main.c ¸í·ÉÀ¸·Î main.c
    ÆÄÀÏÀ» 1.2 ¹öÀüÀ¸·Î µÇµ¹¸± ¶§ Ç×»ó ½ºÆ¼Å° ű׸¦ Áý¾î ³Ö´Â´Ù. ½ºÆ¼Å° Á¸Àç
    À¯¹«´Â cvs status [ÆÄÀϸí]À¸·Î È®ÀÎ °¡´ÉÇÏ´Ù.

    cvs up -A main.c




    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ÆÄÀÏ ·Î±× ¹× ƯÁ¤ ºÎºÐÀ» ¼öÁ¤ÇÑ »ç¶÷ È®ÀÎ
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs log [ÆÄÀϸí]

    À» ÀÌ¿ëÇÏ¸é ¹öÀüº°·Î ¼öÁ¤ÇÑ »ç¶÷ÀÌ ³ªÅ¸³ª°Ô µÇ°í

    cvs annotate [filename] or cvs ann [filename]

    À» ÀÌ¿ë ¼Ò½º ¶óÀÎ º°·Î ¼öÁ¤ÇÑ »ç¶÷ÀÌ ³ªÅ¸³ª°Ô µÈ´Ù.



    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ÆÄÀÏ ¹öÀü´ëº° Â÷ÀÌÁ¡ È®ÀÎ
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs diff -r 1.5 -r 1.6 main.c

    1.5¹öÀü¿¡¼­ main.c ÆÄÀϰú 1.6 ¹öÀüÀÇ main.c ÆÄÀÏ¿¡¼­ ´Þ¶óÁø ºÎºÐÀÌ ÀÖ
    ´ÂÁö Ãâ·ÂÇÑ´Ù.



    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ÇöÀç ÀÛ¾÷ µð·ºÅ丮¿¡ ÀÖ´Â main.c ¿Í ÀúÀå¼Ò µð·ºÅ丮 ³»¿ë ºñ±³
    //
    //
    ////////////////////////////////////////////////////////////////////////

    cvs diff -r HEAD main.c




    ////////////////////////////////////////////////////////////////////////
    //
    //
    // cvs ¼Ò½º¿¡ TAG°É±â
    //
    //
    ////////////////////////////////////////////////////////////////////////

    ¼Ò½º ÆíÁý »óŸ¦ ÀúÀå Çϱâ À§Çؼ­ ƯÁ¤ ½ÃÁ¡¿¡ TAGÀ» °É ¼ö °¡ ÀÖ´Ù.

    cvs tag TAG_1

    ÀÌ·±½ÄÀ¸·Î ÇöÀç »óŸ¦ űë ÇØ³õÀ¸¸é ÃßÈÄ TAG_1 ÀÇ »óÅ·Πµ¹¾Æ
    °¥¼ö °¡ ÀÖ´Ù.

    cvs up -r TAG_!

    ÀÌ·¸°Ô ű׸¦ °Å´Â°Ç ¹ö±× ¼öÁ¤ Çϰųª ¼Ò½º¸¦ ¸¹ÀÌ ¼öÁ¤ÇØ¾ß ÇÒ °æ¿ì À¯¿ë
    ÇÏ´Ù.



    ///////////////////////////////////////////////////////////////////////

    cvs command

    ///////////////////////////////////////////////////////////////////////

    login                : cvs server login
    logout            : cvspass file¿¡¼­ ÀúÀå¼Ò Á¦°Å
    import            : ÇÁ·ÎÁ§Æ® ÆÄÀÏ µî·Ï
    checkout(co, get)    : ÇÁ·ÎÁ§Æ® ÆÄÀÏ °¡Á®¿À±â
    commit(ci)        : project file ¼öÁ¤ÈÄ cvs ¼­¹ö¿¡ ¹Ý¿µ
    update(up)        : cvs serverÀÇ ÃֽйöÀüÀ» ÀÛ¾÷ µð·ºÅ丮¿¡ ¹Ý¿µ
    add(new)            : ÆÄÀÏ ¶Ç´Â µð·ºÅ丮 Ãß°¡
    remove(rm, delete)     : ÆÄÀÏ »èÁ¦
    diff                : ÆÄÀÏ ¹öÀü¿¡ µû¸¥ Â÷ÀÌÁ¡ ºñ±³
    log                : ÆÄÀÏ ·Î±× º¸±â
    annotate(ann)        : Çະ Á¤º¸ Ãâ·Â(³¯Â¥ ÀÛ¼ºÀÚ µî)
    status            : ÆÄÀÏ »óÅ º¸±â
    history            : °¢Á¾ È÷½ºÅ丮 º¸±â
    tag                : ÇÁ·ÎÁ§Æ® ÆÄÀϵé űë
    rtag                : ÀúÀå¼Ò µð·ºÅ丮¿¡ űë
    release            : ¸ðµâ release

    /////////////////////////////////////////////////////////////////////////


    ÂüÁ¶ »çÀÌÆ®

    http://wiki.kldp.org/wiki.php/DocbookSgml/CVS_Tutorial-KLDP
    http://jakarta-k.sourceforge.net/guide/HOWTO_Sourceforge_CVS.html#%C1%D8%BA%F1%B9%B0

    ´Ù¿î·Îµå »çÀÌÆ®
    http://www.cvshome.org

    DOWNLOAD : CVS
    Filesize : 8.1Kb

    Comment


    ÀÔ·ÂÇÏ3 1283579534



    Locations of visitors to this page