This construction is usually followed by が or けれど and means something like "yes, one does X but...". It conveys the meaning that there's a caveat - the statement is true but there's a condition/fact that modifies its meaning, softening it or negating to some extent. It's used to justify your actions ("Yes, it was expensive but I needed it (so I bought it)."), providing an opposing view in a soft way ("Yes, it's nice but it's too dark (so I won't buy it)."), etc.
Don't worry about the fact that the verb or adjective is repeated twice - it's just the way the structure is built.
Note that this structure also exist for な-adjectives: な-adj ことは な2-adjだ.
It's best to understand it based on examples.
高{たか}かったことは高{たか}かった。。。
It was expensive but... (I liked it so I bought it anyway)
笑{わら}うことは笑{わら}うがおかしくない。
(Yes, ) I laughed but it wasn't really funny.
便利{べんり}なことは便利{べんり}だが、高{たか}すぎる。
(It's true) It is convenient but it's too expensive.
安{やす}いことは安{やす}いがたちがわるい。
(You may think) It is cheap but the quality is poor.
Reference
"A Dictionary of Basic Japanese Grammar", page 206. 「ことは」structure's explanation - translated as "indeed one does something alright, (but ~); indeed ~ (but ~); do ~ (but ~)".
"A Dictionary of Intermediate Japanese Grammar", page 205. 「ことは」structure is compared to 「~ないこともない」. It is stated that both structure are used to not give an unconditional statement. The former is used to answer affirmative questions, the latter negative questions.